react入門學(xué)習(xí)(二)

基礎(chǔ)看完了载矿,現(xiàn)在來記錄一下state和props

state

class listData extends React.Component{
  //es6 的 語法垄潮,詳情請出門右轉(zhuǎn)看ES6
  constructor(...props){
    super(...props)
              //也就這個(gè)state這個(gè)沒有用react自己的getInitialState
         this.state = {
        testState:true
        }
     }
  //其他的react生命周期照樣可以使用,不過恢准,注意沒有逗號~
  componentDidMount(){
    // ajax code balabala
  }
  changeState(){
    this.setState({
      testState: !this.state.testState
    },()=>{
//這個(gè)是setState的第二個(gè)參數(shù)魂挂,也就是一個(gè)function,就是一個(gè)回調(diào)函數(shù)馁筐,在state修改完之后涂召,你想做的事情就可以放在這里
      console.log(this.state.testState);
//如果不是在setState的回調(diào)里打印state的話,是沒有改變之前的state敏沉,因?yàn)閟etState是異步操作
    })
  }
  render(){
    return(
      <div onClick = {this.changeState.bind(this)}>測試那么一下</div>
    )  
  }
}

上面是示例代碼果正,現(xiàn)在來BB一下相關(guān)東西
state呢,個(gè)人理解盟迟,是一個(gè)全局的超級大對象秋泳,也就是react提倡的虛擬dom的根本(我這么理解的,鍵盤俠勿擾)
可以把任何東西掛載在state中攒菠,當(dāng)然后通過setState改變你要改變的state相應(yīng)屬性迫皱,react會(huì)自己幫你判斷你在引用該state的地方是否需要更新。

那么問題來了,如果你頻繁操作state卓起,小的倒還好和敬,ajax返回后的state一般數(shù)據(jù)量比較大,如何處理戏阅?總不能每次都要比對全部的state昼弟,對吧?
如果你遇到了奕筐,屆時(shí)請記得拆分舱痘,也就是把這種數(shù)據(jù)量大的state單獨(dú)拎出去創(chuàng)建一個(gè)新的組件類。然后使用react生命周期中的 shouldComponentUpdate 离赫。
生命周期相關(guān)芭逝,會(huì)在后面整理,這里提一下笆怠。使用詳情铝耻,先自行查一下吧。

設(shè)置state還可以使用
setState((prevState,props)=>{
    fuck:!prevState.fuck
}) // props不用的時(shí)候可以不傳

props

props是父子組件之間傳值
let Parent = React.createClass({
  getInitialState({
    return{
      tabIndex:1
    }
  }),
  render(){
    return(
      <div>
        <Child parent = {this}/>//把需要傳給子組件的東西放在這里蹬刷,可以直接把父組件的this傳給子組件
      </div>
    )
  }
});
let Child = React.createClass({
  render(){
    return(
      <div>{this.props.parent.state.tabIndex}</div>  //this.props.parent取到的就是父組件傳過來的this,父組件的this都拿到了,那么父組件里的其他東西也就可以拿到了频丘。
//也可以傳其他的办成,類似于回調(diào)等
            )
  }
})
再補(bǔ)一種寫法
{
        this.state.dialogShow ? 
                <Dialog title="title" content="content" 
                    sureCall={this.sure.bind(this)} cancelCall = {()=>this.setState({dialogShow:false})}>
                        <input className="addTagNameInput"  value={this.state.editInput} defaultValue="" placeholder="請輸入名稱" onChange={(e)=>{this.setState({editInput:e.target.value})}}/>
                    </Dialog> : null
 }

因?yàn)檫@里只是負(fù)責(zé)展示,并沒有什么邏輯搂漠,所以沒有使用class Dialog extends React...來編寫
這種是普通的無狀態(tài)組件
props是父級調(diào)用的時(shí)候傳入的所有

function Dialog(props){
    //從傳入的props里解構(gòu)出來需要的東西
    const{title,sureCall,cancelCall,children,content=""} = props;
    return (
         <div className={content ? content + " cover" : "cover"}>
            <div className="delDialog">
                <div className="dialogTitle">
                    <p>{title}</p>
                    <span onClick = {cancelCall}></span>
                </div>
                <div className="dialogCon" >
                    {children}
                </div>
                <div className="dialogBtn">
                    <span className="sure" onClick = {sureCall}>
                        確定
                    </span>
                    <span className="cancel" onClick = {cancelCall}>
                        取消
                    </span>
                </div>
            </div>
        </div>
    )
}

這里的children迂卢,是<Dialog></Dialog>標(biāo)簽中間的東西,可以是元素標(biāo)簽也可以是文字
如果不需要額外的children,可以直接<Dialog />傳入就可以了桐汤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末而克,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子怔毛,更是在濱河造成了極大的恐慌员萍,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拣度,死亡現(xiàn)場離奇詭異碎绎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)抗果,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門筋帖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冤馏,你說我怎么就攤上這事日麸。” “怎么了逮光?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵代箭,是天一觀的道長墩划。 經(jīng)常有香客問我,道長梢卸,這世上最難降的妖魔是什么走诞? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蛤高,結(jié)果婚禮上蚣旱,老公的妹妹穿的比我還像新娘。我一直安慰自己戴陡,他們只是感情好塞绿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恤批,像睡著了一般异吻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喜庞,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天诀浪,我揣著相機(jī)與錄音,去河邊找鬼延都。 笑死雷猪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晰房。 我是一名探鬼主播求摇,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼殊者!你這毒婦竟也來了与境?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤猖吴,失蹤者是張志新(化名)和其女友劉穎摔刁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體距误,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡簸搞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了准潭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趁俊。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖刑然,靈堂內(nèi)的尸體忽然破棺而出寺擂,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布怔软,位于F島的核電站垦细,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挡逼。R本人自食惡果不足惜括改,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望家坎。 院中可真熱鬧嘱能,春花似錦、人聲如沸虱疏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽做瞪。三九已至对粪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間装蓬,已是汗流浹背著拭。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牍帚,地道東北人茫死。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像履羞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子屡久,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 個(gè)人筆記, 轉(zhuǎn)載請注明轉(zhuǎn)載自 szhshp的第三邊境研究所 Refs and the DOM In the t...
    szhielelp閱讀 1,474評論 0 1
  • 3. JSX JSX是對JavaScript語言的一個(gè)擴(kuò)展語法忆首, 用于生產(chǎn)React“元素”,建議在描述UI的時(shí)候...
    pixels閱讀 2,826評論 0 24
  • 1被环、什么是react React.js 是一個(gè)幫助你構(gòu)建頁面 UI 的庫糙及。React.js 將幫助我們將界面分成了...
    谷子多閱讀 2,557評論 1 13
  • 以下內(nèi)容是我在學(xué)習(xí)和研究React時(shí),對React的特性筛欢、重點(diǎn)和注意事項(xiàng)的提取浸锨、精練和總結(jié),可以做為React特性...
    科研者閱讀 8,232評論 2 21
  • 最近看了一本關(guān)于學(xué)習(xí)方法論的書版姑,強(qiáng)調(diào)了記筆記和堅(jiān)持的重要性柱搜。這幾天也剛好在學(xué)習(xí)React,所以我打算每天堅(jiān)持一篇R...
    gaoer1938閱讀 1,684評論 0 5