国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

React組件設(shè)計模式-Provider-Consumer

CKJOKER / 2737人閱讀

摘要:和是成對出現(xiàn)的,每一個都會對應(yīng)一個。而每一對都是由創(chuàng)建出來的。是一個普通的組件,當(dāng)然,是需要位于組件的上層。又聲明了這個范圍的數(shù)據(jù)結(jié)構(gòu)。解決嵌套問題的方式也更優(yōu)雅。即使這一對的于另一對的的數(shù)據(jù)結(jié)構(gòu)和值的類型相同,這個也讓能訪問那個的上下文。

我們都知道,基于props做組件的跨層級數(shù)據(jù)傳遞是非常困難并且麻煩的,中間層組件要為了傳遞數(shù)據(jù)添加一些無用的props。
而React自身早已提供了context API來解決這種問題,但是16.3.0之前官方都建議不要使用,認為會遲早會被廢棄掉。說歸說,很多庫已經(jīng)采用了
context API。可見呼聲由多么強烈。終于在16.3.0之后的版本,React正式提供了穩(wěn)定的context API,本文中的示例基于v16.3.0之后的context API。

概念

首先要理解上下文(context)的作用以及提供者和消費者分別是什么,同時要思考這種模式解決的是什么問題(跨層級組件通信)。

context做的事情就是創(chuàng)建一個上下文對象,并且對外暴露提供者(通常在組件樹中上層的位置)消費者,在上下文之內(nèi)的所有子組件,
都可以訪問這個上下文環(huán)境之內(nèi)的數(shù)據(jù),并且不用通過props。可以理解為有一個集中管理state的對象,并限定了這個對象可訪問的范圍,
在范圍之內(nèi)的子組件都能獲取到它內(nèi)部的值。

提供者為消費者提供context之內(nèi)的數(shù)據(jù),消費者獲取提供者為它提供的數(shù)據(jù),自然就解決了上邊的問題。

用法

這里要用到一個小例子,功能就是主題顏色的切換。效果如圖:

根據(jù)上邊的概念和功能,分解一下要實現(xiàn)的步驟:

創(chuàng)建一個上下文,來提供給我們提供者和消費者

提供者提供數(shù)據(jù)

消費者獲取數(shù)據(jù)

這里的文件組織是這樣的:

├─context.js    // 存放context的文件
│─index.js      // 根組件,Provider所在的層級
│─Page.js       // 為了體現(xiàn)跨層級通信的添加的一個中間層級組件,子組件為Title和Paragraph
│─Title.js      // 消費者所在的層級
│─Paragraph.js  // 消費者所在的層級
創(chuàng)建一個上下文
import React from "react"

const ThemeContext = React.createContext()

export const ThemeProvider = ThemeContext.Provider
export const ThemeConsumer = ThemeContext.Consumer

這里,ThemeContext就是一個被創(chuàng)建出來的上下文,它內(nèi)部包含了兩個屬性,看名字就可以知道,一個是提供者一個是消費者。
Provider和Consumer是成對出現(xiàn)的,每一個Provider都會對應(yīng)一個Consumer。而每一對都是由React.createContext()創(chuàng)建出來的。

page組件

沒啥好說的,就是一個容器組件而已

const Page = () => <>
  
  <Paragraph/>
</></pre>
<b>提供者提供數(shù)據(jù)</b>
<p>提供者一般位于比較上邊的層級,ThemeProvider 接受的value就是它要提供的上下文對象。</p>
<pre>// index.js
import { ThemeProvider } from "./context"

render() {
  const { theme } = this.state
  return <ThemeProvider value={{ themeColor: theme }}>
    <Page/>
  </ThemeProvider>
}
</pre>
<b>消費者獲取數(shù)據(jù)</b>
<p>在這里,消費者使用了renderProps模式,Consumer會將上下文的數(shù)據(jù)作為參數(shù)傳入renderProps渲染的函數(shù)之內(nèi),所以這個函數(shù)內(nèi)才可以訪問上下文的數(shù)據(jù)。</p>
<pre>// Title.js 和 Paragraph的功能是一樣的,代碼也差不多,所以單放了Title.js
import React from "react"
import { ThemeConsumer } from "./context"
class Title extends React.Component {
  render() {
    return <ThemeConsumer>
      {
        theme => <h1 style={{ color: theme.themeColor }}>
          title
        </h1>
      }
    </ThemeConsumer>
  }
}</pre>
<b>關(guān)于嵌套上下文</b>
<p>此刻你可能會產(chǎn)生疑問,就是應(yīng)用之內(nèi)不可能只會有一個context。那多個context如果發(fā)生嵌套了怎么辦?</p>
<b>v16.3.0之前的版本</b>
<p>其實v16.3.0之前版本的React的context的設(shè)計上考慮到了這種場景。只不過實現(xiàn)上麻煩點。來看一下具體用法:<br>和當(dāng)前版本的用法不同的是,Provider和Consumer不是成對被創(chuàng)建的。</p>
<p>Provider是一個普通的組件,當(dāng)然,是需要位于Consumer組件的上層。要創(chuàng)建它,我們需要用到兩個方法:</p>

<p>getChildContext: 提供<b>自身范圍</b>上下文的數(shù)據(jù)</p>
<p>childContextTypes:聲明<b>自身范圍</b>的上下文的結(jié)構(gòu)</p>

<pre>class ThemeProvider extends React.Component {
  getChildContext() {
    return {
      theme: this.props.value
    };
  }
  render() {
    return (
      <React.Fragment>
        {this.props.children}
      </React.Fragment>
    );
  }
}
ThemeProvider.childContextTypes = {
  theme: PropTypes.object
};</pre>
<p>再看消費者,需要用到<b>contextTypes</b>,來聲明接收的上下文的結(jié)構(gòu)。</p>
<pre>const Title = (props, context) => {
  const {textColor} = context.theme;
  return (
    <p style={{color: color}}>
      我是標題
    </p>
  );
};

Title.contextTypes = {
  theme: PropTypes.object
};
</pre>
<p>最后的用法:</p>
<pre><ThemeProvider value={{color: "green" }} >
   <Title />
</ThemeProvider>
</pre>
<p>回到嵌套的問題上,大家看出如何解決的了嗎?</p>
<p>Provider做了兩件事,提供context數(shù)據(jù),然后。又聲明了這個context范圍的數(shù)據(jù)結(jié)構(gòu)。而Consumer呢,通過contextTypes定義接收到的context數(shù)據(jù)結(jié)構(gòu)。<br>也就相當(dāng)于Consumer指定了要接收哪種結(jié)構(gòu)的數(shù)據(jù),而這種結(jié)構(gòu)的數(shù)據(jù)又是由某個Provider提前定義好的。通過這種方式,再多的嵌套也不怕,Consumer只要定義<br>接收誰聲明的context的結(jié)構(gòu)就好了。如果不定義的話,是接收不到context的數(shù)據(jù)的。</p>
<b>v16.3.0之后的版本</b>
<p>v16.3.0之后的版本使用起來比以前簡單了很多。解決嵌套問題的方式也更優(yōu)雅。由于Provider和Consumer是成對地被創(chuàng)建出來的。即使這一對的Provider于另一對的<br>Consumer的數(shù)據(jù)結(jié)構(gòu)和值的類型相同,這個Consumer也讓能訪問那個Provider的上下文。這便是解決方法。</p>
<b>總結(jié)</b>
<p>對于這個context這個東西。我感覺還是不要在應(yīng)用里大量使用。就像React-Redux的Provider,或者antd的LocalProvider,差不多用一次就夠,因為用多會使應(yīng)用里很混亂,<br>組件之間的依賴關(guān)系變得復(fù)雜。但是React為我們提供的這個api還是可以看到它自身還是想彌補其狀態(tài)管理的短板的,況且Hooks中的useReducer出現(xiàn)后,更說明了這一點。</p>           
               
                                           
                       
                 </div>
            
                     <div   id="dtxrpjx"   class="mt-64 tags-seach" >
                 <div   id="ztzrppj"   class="tags-info">
                                                                                                                    
                         <a style="width:120px;" title="GPU云服務(wù)器" href="http://specialneedsforspecialkids.com/site/product/gpu.html">GPU云服務(wù)器</a>
                                             
                         <a style="width:120px;" title="云服務(wù)器" href="http://specialneedsforspecialkids.com/site/active/kuaijiesale.html?ytag=seo">云服務(wù)器</a>
                                                                                                                                                 
                                      
                     
                    
                                                                                               <a style="width:120px;" title="組件設(shè)計" href="http://specialneedsforspecialkids.com/yun/tag/zujiansheji/">組件設(shè)計</a>
                                                                                                           <a style="width:120px;" title="react" href="http://specialneedsforspecialkids.com/yun/tag/react/">react</a>
                                                                                                           <a style="width:120px;" title="_React" href="http://specialneedsforspecialkids.com/yun/tag/_React/">_React</a>
                                                                                                           <a style="width:120px;" title="React 源碼" href="http://specialneedsforspecialkids.com/yun/tag/React yuanma/">React 源碼</a>
                                                         
                 </div>
               
              </div>
             
               <div   id="7lvpvf5"   class="entry-copyright mb-30">
                   <p class="mb-15"> 文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。</p>
                 
                   <p>轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/104502.html</p>
               </div>
                      
               <ul class="pre-next-page">
                 
                                  <li id="jj5xp73"    class="ellipsis"><a class="hpf" href="http://specialneedsforspecialkids.com/yun/104501.html">上一篇:React組件設(shè)計模式-Render-props</a></li>  
                                                
                                       <li id="btj55dd"    class="ellipsis"><a class="hpf" href="http://specialneedsforspecialkids.com/yun/104503.html">下一篇:React組件設(shè)計模式-組合組件</a></li>
                                  </ul>
              </div>
              <div   id="zldj5zj"   class="about_topicone-mid">
                <h3 class="top-com-title mb-0"><span data-id="0">相關(guān)文章</span></h3>
                <ul class="com_white-left-mid atricle-list-box">
                             
                                                                                                    <li>
                                                <div   id="z7lbvrp"   class="atricle-list-right">
                          <h2 class="ellipsis2"><a class="hpf" href="http://specialneedsforspecialkids.com/yun/95195.html"><b><em>React</em> 深入系列7:<em>React</em> 常用<em>模式</em></b></a></h2>
                                                     <p class="ellipsis2 good">摘要:本篇是深入系列的最后一篇,將介紹開發(fā)應(yīng)用時,經(jīng)常用到的模式,這些模式并非都有官方名稱,所以有些模式的命名并不一定準確,請讀者主要關(guān)注模式的內(nèi)容。

React 深入系列,深入講解了React中的重點概念、特性和模式等,旨在幫助大家加深對React的理解,以及在項目中更加靈活地使用React。
本篇是React深入系列的最后一篇,將介紹開發(fā)React應(yīng)用時,經(jīng)常用到的模式,這些模式并非都有...</p>
                                                   
                          <div   id="zjrznnz"   class="com_white-left-info">
                                <div   id="31dd3fn"   class="com_white-left-infol">
                                    <a href="http://specialneedsforspecialkids.com/yun/u-1283.html"><img src="http://specialneedsforspecialkids.com/yun/data/avatar/000/00/12/small_000001283.jpg" alt=""><span id="73hfh5b"    class="layui-hide64">Chao</span></a>
                                    <time datetime="">2019-08-22 17:28</time>
                                    <span><i class="fa fa-commenting"></i>評論0</span> 
                                    <span><i class="fa fa-star"></i>收藏0</span> 
                                </div>
                          </div>
                      </div>
                    </li> 
                                                                                       <li>
                                                <div   id="lbfz7bb"   class="atricle-list-right">
                          <h2 class="ellipsis2"><a class="hpf" href="http://specialneedsforspecialkids.com/yun/79819.html"><b>精益 <em>React</em> 學(xué)習(xí)指南 (Lean <em>React</em>)- 4.2 <em>react</em> patterns</b></a></h2>
                                                     <p class="ellipsis2 good">摘要:另外一點是組件應(yīng)該盡量保證獨立性,避免和外部的耦合,使用全局事件造成了和外部事件的耦合。明確的職責(zé)分配也增加了應(yīng)用的確定性明確只有組件能夠知道狀態(tài)數(shù)據(jù),且是對應(yīng)部分的數(shù)據(jù)。

書籍完整目錄
4.2 react patterns


修改 Props
Immutable data representation


確定性

在 getInitialState 中使用 props
私有狀態(tài)和...</p>
                                                   
                          <div   id="5jh51rh"   class="com_white-left-info">
                                <div   id="flfjjz5"   class="com_white-left-infol">
                                    <a href="http://specialneedsforspecialkids.com/yun/u-98.html"><img src="http://specialneedsforspecialkids.com/yun/data/avatar/000/00/00/small_000000098.jpg" alt=""><span id="rbv55tn"    class="layui-hide64">Berwin</span></a>
                                    <time datetime="">2019-08-19 18:39</time>
                                    <span><i class="fa fa-commenting"></i>評論0</span> 
                                    <span><i class="fa fa-star"></i>收藏0</span> 
                                </div>
                          </div>
                      </div>
                    </li> 
                                                                                       <li>
                                                <div   id="jldjfbp"   class="atricle-list-right">
                          <h2 class="ellipsis2"><a class="hpf" href="http://specialneedsforspecialkids.com/yun/94418.html"><b><em>React</em> <em><em>設(shè)計</em><em>模式</em></em>和場景分析</b></a></h2>
                                                     <p class="ellipsis2 good">摘要:這一周連續(xù)發(fā)表了兩篇關(guān)于的文章組件復(fù)用那些事兒實現(xiàn)按需加載輪子應(yīng)用設(shè)計之道化妙用其中涉及到組件復(fù)用輪子設(shè)計相關(guān)話題,并配合相關(guān)場景實例進行了分析。

showImg(https://segmentfault.com/img/remote/1460000014482098);
這一周連續(xù)發(fā)表了兩篇關(guān)于 React 的文章:

組件復(fù)用那些事兒 - React 實現(xiàn)按需加載輪子
React ...</p>
                                                   
                          <div   id="lzfl33x"   class="com_white-left-info">
                                <div   id="fjpvfrx"   class="com_white-left-infol">
                                    <a href="http://specialneedsforspecialkids.com/yun/u-770.html"><img src="http://specialneedsforspecialkids.com/yun/data/avatar/000/00/07/small_000000770.jpg" alt=""><span id="tvhnt5p"    class="layui-hide64">avwu</span></a>
                                    <time datetime="">2019-08-22 16:30</time>
                                    <span><i class="fa fa-commenting"></i>評論0</span> 
                                    <span><i class="fa fa-star"></i>收藏0</span> 
                                </div>
                          </div>
                      </div>
                    </li> 
                                                                                       <li>
                                                <div   id="33j5jfz"   class="atricle-list-right">
                          <h2 class="ellipsis2"><a class="hpf" href="http://specialneedsforspecialkids.com/yun/52211.html"><b><em>React</em> <em><em>設(shè)計</em><em>模式</em></em>和場景分析</b></a></h2>
                                                     <p class="ellipsis2 good">摘要:這一周連續(xù)發(fā)表了兩篇關(guān)于的文章組件復(fù)用那些事兒實現(xiàn)按需加載輪子應(yīng)用設(shè)計之道化妙用其中涉及到組件復(fù)用輪子設(shè)計相關(guān)話題,并配合相關(guān)場景實例進行了分析。

showImg(https://segmentfault.com/img/remote/1460000014482098);
這一周連續(xù)發(fā)表了兩篇關(guān)于 React 的文章:

組件復(fù)用那些事兒 - React 實現(xiàn)按需加載輪子
React ...</p>
                                                   
                          <div   id="dhvlrpj"   class="com_white-left-info">
                                <div   id="jhlftzj"   class="com_white-left-infol">
                                    <a href="http://specialneedsforspecialkids.com/yun/u-1262.html"><img src="http://specialneedsforspecialkids.com/yun/data/avatar/000/00/12/small_000001262.jpg" alt=""><span id="fhbfdxp"    class="layui-hide64">sshe</span></a>
                                    <time datetime="">2019-08-02 10:14</time>
                                    <span><i class="fa fa-commenting"></i>評論0</span> 
                                    <span><i class="fa fa-star"></i>收藏0</span> 
                                </div>
                          </div>
                      </div>
                    </li> 
                                                                           
                </ul>
              </div>
              
               <div   id="zr3xx1r"   class="topicone-box-wangeditor">
                  
                  <h3 class="top-com-title mb-64"><span>發(fā)表評論</span></h3>
                   <div   id="rn7ztz3"   class="xcp-publish-main flex_box_zd">
                                      
                      <div   id="bvnd5rx"   class="unlogin-pinglun-box">
                        <a href="javascript:login()" class="grad">登陸后可評論</a>
                      </div>                   </div>
               </div>
              <div   id="npnfp9j"   class="site-box-content">
                <div   id="r3tpzjj"   class="site-content-title">
                  <h3 class="top-com-title mb-64"><span>0條評論</span></h3>   
                </div> 
                      <div   id="t9xtz7l"   class="pages"></ul></div>
              </div>
           </div>
           <div   id="dpfvlh3"   class="layui-col-md4 layui-col-lg3 com_white-right site-wrap-right">
              <div   id="jxbnjrl"   class=""> 
                <div   id="5tn51pn"   class="com_layuiright-box user-msgbox">
                    <a href="http://specialneedsforspecialkids.com/yun/u-1276.html"><img src="http://specialneedsforspecialkids.com/yun/data/avatar/000/00/12/small_000001276.jpg" alt=""></a>
                    <h3><a href="http://specialneedsforspecialkids.com/yun/u-1276.html" rel="nofollow">CKJOKER</a></h3>
                    <h6>男<span>|</span>高級講師</h6>
                    <div   id="lvf9tpn"   class="flex_box_zd user-msgbox-atten">
                     
                                                                      <a href="javascript:attentto_user(1276)" id="attenttouser_1276" class="grad follow-btn notfollow attention">我要關(guān)注</a>
      
                                                                                        <a href="javascript:login()" title="發(fā)私信" >我要私信</a>
                     
                                            
                    </div>
                    <div   id="f9rpjhn"   class="user-msgbox-list flex_box_zd">
                          <h3 class="hpf">TA的文章</h3>
                          <a href="http://specialneedsforspecialkids.com/yun/ut-1276.html" class="box_hxjz">閱讀更多</a>
                    </div>
                      <ul class="user-msgbox-ul">
                                                  <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/124155.html">CDN加速可以為網(wǎng)絡(luò)用戶解決哪些難題?</a></h3>
                            <p>閱讀 1010<span>·</span>2021-11-22 13:52</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/116261.html">CSS實現(xiàn)照片堆疊效果</a></h3>
                            <p>閱讀 924<span>·</span>2019-08-30 15:44</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/116067.html">偽元素能做好多事</a></h3>
                            <p>閱讀 570<span>·</span>2019-08-30 15:43</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/115124.html">行內(nèi)元素和塊狀元素居中</a></h3>
                            <p>閱讀 2424<span>·</span>2019-08-30 12:52</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/113641.html">對min/max-width/height的認識</a></h3>
                            <p>閱讀 3473<span>·</span>2019-08-29 16:16</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/112364.html">loading</a></h3>
                            <p>閱讀 637<span>·</span>2019-08-29 13:05</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/110274.html">整理2</a></h3>
                            <p>閱讀 2943<span>·</span>2019-08-26 18:36</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/109499.html">前端利用pdfobject.js處理pdf文件</a></h3>
                            <p>閱讀 1975<span>·</span>2019-08-26 13:46</p></li>
                                                
                      </ul>
                </div>

                   <!-- 文章詳情右側(cè)廣告-->
              
  <div   id="lv5h3lx"   class="com_layuiright-box">
                  <h6 class="top-com-title"><span>最新活動</span></h6> 
           
         <div   id="5zh5jfv"   class="com_adbox">
                    <div   id="7fhrjxz"   class="layui-carousel" id="right-item">
                      <div carousel-item>
                                                                                                                       <div>
                          <a href="http://specialneedsforspecialkids.com/site/active/kuaijiesale.html?ytag=seo"  rel="nofollow">
                            <img src="http://specialneedsforspecialkids.com/yun/data/attach/240625/2rTjEHmi.png" alt="云服務(wù)器">                                 
                          </a>
                        </div>
                                                <div>
                          <a href="http://specialneedsforspecialkids.com/site/product/gpu.html"  rel="nofollow">
                            <img src="http://specialneedsforspecialkids.com/yun/data/attach/240807/7NjZjdrd.png" alt="GPU云服務(wù)器">                                 
                          </a>
                        </div>
                                                                   
                    
                        
                      </div>
                    </div>
                      
                    </div>                    <!-- banner結(jié)束 -->
              
<div   id="lxnrv5j"   class="adhtml">

</div>
                <script>
                $(function(){
                    $.ajax({
                        type: "GET",
                                url:"http://specialneedsforspecialkids.com/yun/ad/getad/1.html",
                                cache: false,
                                success: function(text){
                                  $(".adhtml").html(text);
                                }
                        });
                    })
                </script>                </div>              </div>
           </div>
        </div>
      </div> 
    </section>
    <!-- wap拉出按鈕 -->
     <div   id="rblxlvz"   class="site-tree-mobile layui-hide">
      <i class="layui-icon layui-icon-spread-left"></i>
    </div>
    <!-- wap遮罩層 -->
    <div   id="njltlj7"   class="site-mobile-shade"></div>
    
       <!--付費閱讀 -->
       <div   class="ptvxl5l"   id="payread">
         <div   id="hvbrjzx"   class="layui-form-item">閱讀需要支付1元查看</div>  
         <div   id="npxrlrx"   class="layui-form-item"><button class="btn-right">支付并查看</button></div>     
       </div>
      <script>
      var prei=0;

       
       $(".site-seo-depict pre").each(function(){
          var html=$(this).html().replace("<code>","").replace("</code>","").replace('<code class="javascript hljs" codemark="1">','');
          $(this).attr('data-clipboard-text',html).attr("id","pre"+prei);
          $(this).html("").append("<code>"+html+"</code>");
         prei++;
       })
           $(".site-seo-depict img").each(function(){
             
            if($(this).attr("src").indexOf('data:image/svg+xml')!= -1){
                $(this).remove();
            }
       })
     $("LINK[href*='style-49037e4d27.css']").remove();
       $("LINK[href*='markdown_views-d7a94ec6ab.css']").remove();
layui.use(['jquery', 'layer','code'], function(){
  $("pre").attr("class","layui-code");
      $("pre").attr("lay-title","");
       $("pre").attr("lay-skin","");
  layui.code(); 
       $(".layui-code-h3 a").attr("class","copycode").html("復(fù)制代碼 ").attr("onclick","copycode(this)");
      
});
function copycode(target){
    var id=$(target).parent().parent().attr("id");
  
                  var clipboard = new ClipboardJS("#"+id);

clipboard.on('success', function(e) {


    e.clearSelection();
    alert("復(fù)制成功")
});

clipboard.on('error', function(e) {
    alert("復(fù)制失敗")
});
}
//$(".site-seo-depict").html($(".site-seo-depict").html().slice(0, -5));
</script>
  <link rel="stylesheet" type="text/css" href="http://specialneedsforspecialkids.com/yun/static/js/neweditor/code/styles/tomorrow-night-eighties.css">
    <script src="http://specialneedsforspecialkids.com/yun/static/js/neweditor/code/highlight.pack.js" type="text/javascript"></script>
    <script src="http://specialneedsforspecialkids.com/yun/static/js/clipboard.js"></script>

<script>hljs.initHighlightingOnLoad();</script>

<script>
    function setcode(){
        var _html='';
    	  document.querySelectorAll('pre code').forEach((block) => {
        	  var _tmptext=$.trim($(block).text());
        	  if(_tmptext!=''){
        		  _html=_html+_tmptext;
        		  console.log(_html);
        	  }
    		 
    		  
    		 
      	  });
    	 

    }

</script>

<script>
function payread(){
  layer.open({
      type: 1,
      title:"付費閱讀",
      shadeClose: true,
      content: $('#payread')
    });
}
// 舉報
function jupao_tip(){
  layer.open({
      type: 1,
      title:false,
      shadeClose: true,
      content: $('#jubao')
    });

}
$(".getcommentlist").click(function(){
var _id=$(this).attr("dataid");
var _tid=$(this).attr("datatid");
$("#articlecommentlist"+_id).toggleClass("hide");
var flag=$("#articlecommentlist"+_id).attr("dataflag");
if(flag==1){
flag=0;
}else{
flag=1;
//加載評論
loadarticlecommentlist(_id,_tid);
}
$("#articlecommentlist"+_id).attr("dataflag",flag);

})
$(".add-comment-btn").click(function(){
var _id=$(this).attr("dataid");
$(".formcomment"+_id).toggleClass("hide");
})
$(".btn-sendartcomment").click(function(){
var _aid=$(this).attr("dataid");
var _tid=$(this).attr("datatid");
var _content=$.trim($(".commenttext"+_aid).val());
if(_content==''){
alert("評論內(nèi)容不能為空");
return false;
}
var touid=$("#btnsendcomment"+_aid).attr("touid");
if(touid==null){
touid=0;
}
addarticlecomment(_tid,_aid,_content,touid);
})
 $(".button_agree").click(function(){
 var supportobj = $(this);
         var tid = $(this).attr("id");
         $.ajax({
         type: "GET",
                 url:"http://specialneedsforspecialkids.com/yun/index.php?topic/ajaxhassupport/" + tid,
                 cache: false,
                 success: function(hassupport){
                 if (hassupport != '1'){






                         $.ajax({
                         type: "GET",
                                 cache:false,
                                 url: "http://specialneedsforspecialkids.com/yun/index.php?topic/ajaxaddsupport/" + tid,
                                 success: function(comments) {

                                 supportobj.find("span").html(comments+"人贊");
                                 }
                         });
                 }else{
                	 alert("您已經(jīng)贊過");
                 }
                 }
         });
 });
 function attenquestion(_tid,_rs){
    	$.ajax({
    //提交數(shù)據(jù)的類型 POST GET
    type:"POST",
    //提交的網(wǎng)址
    url:"http://specialneedsforspecialkids.com/yun/favorite/topicadd.html",
    //提交的數(shù)據(jù)
    data:{tid:_tid,rs:_rs},
    //返回數(shù)據(jù)的格式
    datatype: "json",//"xml", "html", "script", "json", "jsonp", "text".
    //在請求之前調(diào)用的函數(shù)
    beforeSend:function(){},
    //成功返回之后調(diào)用的函數(shù)
    success:function(data){
    	var data=eval("("+data+")");
    	console.log(data)
       if(data.code==2000){
    	layer.msg(data.msg,function(){
    	  if(data.rs==1){
    	      //取消收藏
    	      $(".layui-layer-tips").attr("data-tips","收藏文章");
    	      $(".layui-layer-tips").html('<i class="fa fa-heart-o"></i>');
    	  }
    	   if(data.rs==0){
    	      //收藏成功
    	      $(".layui-layer-tips").attr("data-tips","已收藏文章");
    	      $(".layui-layer-tips").html('<i class="fa fa-heart"></i>')
    	  }
    	})
    	 
       }else{
    	layer.msg(data.msg)
       }


    }   ,
    //調(diào)用執(zhí)行后調(diào)用的函數(shù)
    complete: function(XMLHttpRequest, textStatus){
     	postadopt=true;
    },
    //調(diào)用出錯執(zhí)行的函數(shù)
    error: function(){
        //請求出錯處理
    	postadopt=false;
    }
 });
}
</script>
<footer>
        <div   id="l5vlnxx"   class="layui-container">
            <div   id="7hn5lxj"   class="flex_box_zd">
              <div   id="b7rl7jr"   class="left-footer">
                    <h6><a href="http://specialneedsforspecialkids.com/"><img src="http://specialneedsforspecialkids.com/yun/static/theme/ukd//images/logo.png" alt="UCloud (優(yōu)刻得科技股份有限公司)"></a></h6>
                    <p>UCloud (優(yōu)刻得科技股份有限公司)是中立、安全的云計算服務(wù)平臺,堅持中立,不涉足客戶業(yè)務(wù)領(lǐng)域。公司自主研發(fā)IaaS、PaaS、大數(shù)據(jù)流通平臺、AI服務(wù)平臺等一系列云計算產(chǎn)品,并深入了解互聯(lián)網(wǎng)、傳統(tǒng)企業(yè)在不同場景下的業(yè)務(wù)需求,提供公有云、混合云、私有云、專有云在內(nèi)的綜合性行業(yè)解決方案。</p>
              </div>
              <div   id="n3fjrvf"   class="right-footer layui-hidemd">
                  <ul class="flex_box_zd">
                      <li>
                        <h6>UCloud與云服務(wù)</h6>
                         <p><a href="http://specialneedsforspecialkids.com/site/about/intro/">公司介紹</a></p>
                         <p><a  >加入我們</a></p>
                         <p><a href="http://specialneedsforspecialkids.com/site/ucan/onlineclass/">UCan線上公開課</a></p>
                         <p><a href="http://specialneedsforspecialkids.com/site/solutions.html" >行業(yè)解決方案</a></p>                                                  <p><a href="http://specialneedsforspecialkids.com/site/pro-notice/">產(chǎn)品動態(tài)</a></p>
                      </li>
                      <li>
                        <h6>友情鏈接</h6>                                             <p><a >GPU算力平臺</a></p>                                             <p><a >UCloud私有云</a></p>
                                             <p><a >SurferCloud</a></p>                                             <p><a >工廠仿真軟件</a></p>                                             <p><a >Pinex</a></p>                                             <p><a >AI繪畫</a></p>
                                             
                      </li>
                      <li>
                        <h6>社區(qū)欄目</h6>
                         <p><a href="http://specialneedsforspecialkids.com/yun/column/index.html">專欄文章</a></p>
                     <p><a href="http://specialneedsforspecialkids.com/yun/udata/">專題地圖</a></p>                      </li>
                      <li>
                        <h6>常見問題</h6>
                         <p><a href="http://specialneedsforspecialkids.com/site/ucsafe/notice.html" >安全中心</a></p>
                         <p><a href="http://specialneedsforspecialkids.com/site/about/news/recent/" >新聞動態(tài)</a></p>
                         <p><a href="http://specialneedsforspecialkids.com/site/about/news/report/">媒體動態(tài)</a></p>                                                  <p><a href="http://specialneedsforspecialkids.com/site/cases.html">客戶案例</a></p>                                                
                         <p><a href="http://specialneedsforspecialkids.com/site/notice/">公告</a></p>
                      </li>
                      <li>
                          <span><img src="https://static.ucloud.cn/7a4b6983f4b94bcb97380adc5d073865.png" alt="優(yōu)刻得"></span>
                          <p>掃掃了解更多</p></div>
            </div>
            <div   id="7tzjrjf"   class="copyright">Copyright ? 2012-2023 UCloud 優(yōu)刻得科技股份有限公司<i>|</i><a rel="nofollow" >滬公網(wǎng)安備 31011002000058號</a><i>|</i><a rel="nofollow" ></a> 滬ICP備12020087號-3</a><i>|</i> <script type="text/javascript" src="https://gyfk12.kuaishang.cn/bs/ks.j?cI=197688&fI=125915" charset="utf-8"></script>
<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?290c2650b305fc9fff0dbdcafe48b59d";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-DZSMXQ3P9N"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-DZSMXQ3P9N');
</script>
<script>
(function(){
var el = document.createElement("script");
el.src = "https://lf1-cdn-tos.bytegoofy.com/goofy/ttzz/push.js?99f50ea166557aed914eb4a66a7a70a4709cbb98a54ecb576877d99556fb4bfc3d72cd14f8a76432df3935ab77ec54f830517b3cb210f7fd334f50ccb772134a";
el.id = "ttzz";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(el, s);
})(window)
</script></div> 
        </div>
    </footer>

<footer>
<div class="friendship-link">
<p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p>
<a href="http://specialneedsforspecialkids.com/" title="国产xxxx99真实实拍">国产xxxx99真实实拍</a>

<div class="friend-links">

<a href="http://belistarlp.com/">国产黄色在线</a>
</div>
</div>

</footer>

<script>
(function(){
    var bp = document.createElement('script');
    var curProtocol = window.location.protocol.split(':')[0];
    if (curProtocol === 'https') {
        bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
    }
    else {
        bp.src = 'http://push.zhanzhang.baidu.com/push.js';
    }
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(bp, s);
})();
</script>
</body><div id="frxfv" class="pl_css_ganrao" style="display: none;"><menuitem id="frxfv"></menuitem><dfn id="frxfv"></dfn><menuitem id="frxfv"><form id="frxfv"><dl id="frxfv"><menuitem id="frxfv"></menuitem></dl></form></menuitem><div id="frxfv"></div><acronym id="frxfv"><ruby id="frxfv"></ruby></acronym><em id="frxfv"><dfn id="frxfv"></dfn></em><legend id="frxfv"><tt id="frxfv"><video id="frxfv"><p id="frxfv"></p></video></tt></legend><legend id="frxfv"><b id="frxfv"></b></legend><b id="frxfv"></b><optgroup id="frxfv"></optgroup><listing id="frxfv"><div id="frxfv"></div></listing><thead id="frxfv"><dfn id="frxfv"></dfn></thead><label id="frxfv"></label><strong id="frxfv"></strong><i id="frxfv"></i><dfn id="frxfv"></dfn><div id="frxfv"><u id="frxfv"></u></div><font id="frxfv"><th id="frxfv"></th></font><pre id="frxfv"><pre id="frxfv"></pre></pre><small id="frxfv"><var id="frxfv"></var></small><p id="frxfv"><thead id="frxfv"><listing id="frxfv"><legend id="frxfv"></legend></listing></thead></p><thead id="frxfv"><font id="frxfv"><dfn id="frxfv"><thead id="frxfv"></thead></dfn></font></thead><meter id="frxfv"></meter><div id="frxfv"><b id="frxfv"><strong id="frxfv"><meter id="frxfv"></meter></strong></b></div><meter id="frxfv"></meter><form id="frxfv"><dfn id="frxfv"></dfn></form><small id="frxfv"><sup id="frxfv"><mark id="frxfv"><pre id="frxfv"></pre></mark></sup></small><var id="frxfv"><ins id="frxfv"><pre id="frxfv"><thead id="frxfv"></thead></pre></ins></var><style id="frxfv"><dl id="frxfv"></dl></style><progress id="frxfv"><dfn id="frxfv"><ol id="frxfv"><ins id="frxfv"></ins></ol></dfn></progress><mark id="frxfv"><strong id="frxfv"></strong></mark><track id="frxfv"></track><output id="frxfv"><style id="frxfv"><form id="frxfv"><track id="frxfv"></track></form></style></output><mark id="frxfv"><dfn id="frxfv"></dfn></mark><strike id="frxfv"><em id="frxfv"></em></strike><var id="frxfv"><progress id="frxfv"></progress></var><mark id="frxfv"><strong id="frxfv"></strong></mark><div id="frxfv"><b id="frxfv"></b></div><u id="frxfv"><strong id="frxfv"></strong></u><pre id="frxfv"></pre><strike id="frxfv"><font id="frxfv"></font></strike><listing id="frxfv"><div id="frxfv"></div></listing><dl id="frxfv"></dl><strike id="frxfv"><font id="frxfv"></font></strike><thead id="frxfv"></thead><div id="frxfv"><b id="frxfv"></b></div><p id="frxfv"></p><big id="frxfv"></big><listing id="frxfv"><meter id="frxfv"><u id="frxfv"><acronym id="frxfv"></acronym></u></meter></listing><strong id="frxfv"></strong><small id="frxfv"></small><label id="frxfv"><menuitem id="frxfv"></menuitem></label><p id="frxfv"><tt id="frxfv"></tt></p><pre id="frxfv"><sub id="frxfv"><video id="frxfv"><p id="frxfv"></p></video></sub></pre><font id="frxfv"><th id="frxfv"><thead id="frxfv"><small id="frxfv"></small></thead></th></font><style id="frxfv"></style><tt id="frxfv"><label id="frxfv"><meter id="frxfv"><u id="frxfv"></u></meter></label></tt><strike id="frxfv"><font id="frxfv"></font></strike><ins id="frxfv"><optgroup id="frxfv"></optgroup></ins><style id="frxfv"><address id="frxfv"><ruby id="frxfv"><i id="frxfv"></i></ruby></address></style><big id="frxfv"><dfn id="frxfv"><ol id="frxfv"><ins id="frxfv"></ins></ol></dfn></big><acronym id="frxfv"><menuitem id="frxfv"><label id="frxfv"><form id="frxfv"></form></label></menuitem></acronym><thead id="frxfv"><optgroup id="frxfv"><pre id="frxfv"><rp id="frxfv"></rp></pre></optgroup></thead><address id="frxfv"><track id="frxfv"></track></address><label id="frxfv"></label><label id="frxfv"><menuitem id="frxfv"><form id="frxfv"><acronym id="frxfv"></acronym></form></menuitem></label><u id="frxfv"><dl id="frxfv"><output id="frxfv"><form id="frxfv"></form></output></dl></u><strike id="frxfv"><font id="frxfv"><dfn id="frxfv"><thead id="frxfv"></thead></dfn></font></strike><label id="frxfv"></label><strong id="frxfv"><div id="frxfv"><form id="frxfv"><dl id="frxfv"></dl></form></div></strong><pre id="frxfv"><sub id="frxfv"></sub></pre><form id="frxfv"></form><output id="frxfv"></output><label id="frxfv"></label><style id="frxfv"></style><legend id="frxfv"></legend><pre id="frxfv"><sub id="frxfv"><video id="frxfv"><p id="frxfv"></p></video></sub></pre><sup id="frxfv"></sup><dfn id="frxfv"><sup id="frxfv"></sup></dfn><output id="frxfv"></output><rp id="frxfv"></rp><pre id="frxfv"></pre><rp id="frxfv"></rp><dfn id="frxfv"></dfn><var id="frxfv"></var><sup id="frxfv"><mark id="frxfv"></mark></sup><p id="frxfv"><thead id="frxfv"></thead></p><track id="frxfv"><strike id="frxfv"><em id="frxfv"><th id="frxfv"></th></em></strike></track><dfn id="frxfv"></dfn><strong id="frxfv"></strong><dfn id="frxfv"><thead id="frxfv"></thead></dfn><p id="frxfv"><tt id="frxfv"></tt></p><dl id="frxfv"><output id="frxfv"><label id="frxfv"><acronym id="frxfv"></acronym></label></output></dl><i id="frxfv"><em id="frxfv"></em></i><pre id="frxfv"><span id="frxfv"></span></pre><pre id="frxfv"><pre id="frxfv"><rp id="frxfv"><strong id="frxfv"></strong></rp></pre></pre><sub id="frxfv"></sub><big id="frxfv"><small id="frxfv"><var id="frxfv"><progress id="frxfv"></progress></var></small></big><dfn id="frxfv"><ol id="frxfv"></ol></dfn><font id="frxfv"><dfn id="frxfv"></dfn></font><label id="frxfv"><meter id="frxfv"><u id="frxfv"><dl id="frxfv"></dl></u></meter></label><p id="frxfv"><thead id="frxfv"><nobr id="frxfv"><legend id="frxfv"></legend></nobr></thead></p><dl id="frxfv"></dl><legend id="frxfv"><b id="frxfv"></b></legend><strong id="frxfv"></strong><b id="frxfv"><strong id="frxfv"></strong></b><acronym id="frxfv"></acronym><pre id="frxfv"><span id="frxfv"><rp id="frxfv"><legend id="frxfv"></legend></rp></span></pre><meter id="frxfv"><u id="frxfv"></u></meter><em id="frxfv"></em><dl id="frxfv"></dl><label id="frxfv"><form id="frxfv"><ruby id="frxfv"><strike id="frxfv"></strike></ruby></form></label><nobr id="frxfv"></nobr><progress id="frxfv"><pre id="frxfv"><sub id="frxfv"><listing id="frxfv"></listing></sub></pre></progress><thead id="frxfv"><nobr id="frxfv"></nobr></thead><p id="frxfv"><thead id="frxfv"><video id="frxfv"><legend id="frxfv"></legend></video></thead></p><th id="frxfv"></th><legend id="frxfv"><b id="frxfv"></b></legend><i id="frxfv"></i><ins id="frxfv"><pre id="frxfv"><span id="frxfv"><video id="frxfv"></video></span></pre></ins><thead id="frxfv"><rp id="frxfv"></rp></thead><sub id="frxfv"><rp id="frxfv"><legend id="frxfv"><tt id="frxfv"></tt></legend></rp></sub><ol id="frxfv"><ins id="frxfv"><legend id="frxfv"><b id="frxfv"></b></legend></ins></ol><strong id="frxfv"></strong><listing id="frxfv"></listing><sup id="frxfv"></sup><rp id="frxfv"><p id="frxfv"></p></rp><pre id="frxfv"><rp id="frxfv"><legend id="frxfv"><sub id="frxfv"></sub></legend></rp></pre><output id="frxfv"><form id="frxfv"><label id="frxfv"><menuitem id="frxfv"></menuitem></label></form></output><i id="frxfv"></i><ins id="frxfv"></ins><span id="frxfv"></span><mark id="frxfv"></mark><tt id="frxfv"><listing id="frxfv"></listing></tt><th id="frxfv"><strike id="frxfv"></strike></th><label id="frxfv"><meter id="frxfv"><form id="frxfv"><acronym id="frxfv"></acronym></form></meter></label><output id="frxfv"><style id="frxfv"><form id="frxfv"><track id="frxfv"></track></form></style></output><output id="frxfv"><label id="frxfv"></label></output><font id="frxfv"></font><nobr id="frxfv"><legend id="frxfv"><tt id="frxfv"><listing id="frxfv"></listing></tt></legend></nobr><small id="frxfv"></small><th id="frxfv"><style id="frxfv"><address id="frxfv"><th id="frxfv"></th></address></style></th><thead id="frxfv"><font id="frxfv"><th id="frxfv"><strike id="frxfv"></strike></th></font></thead><big id="frxfv"><small id="frxfv"><var id="frxfv"><progress id="frxfv"></progress></var></small></big><pre id="frxfv"><span id="frxfv"></span></pre><font id="frxfv"></font><ins id="frxfv"><optgroup id="frxfv"></optgroup></ins><thead id="frxfv"><nobr id="frxfv"></nobr></thead><menuitem id="frxfv"><label id="frxfv"></label></menuitem><font id="frxfv"><th id="frxfv"></th></font></div>
<script src="http://specialneedsforspecialkids.com/yun/static/theme/ukd/js/common.js"></script>
<<script type="text/javascript">
$(".site-seo-depict *,.site-content-answer-body *,.site-body-depict *").css("max-width","100%");
</script>
</html>