婷婷久久综合九色综合,欧美成色婷婷在线观看视频,偷窥视频一区,欧美日本一道道一区二区

<tt id="bu9ss"></tt>
  • <span id="bu9ss"></span>
  • <pre id="bu9ss"><tt id="bu9ss"></tt></pre>
    <label id="bu9ss"></label>

    當前位置:首頁 >  站長 >  編程技術 >  正文

    React中setState的使用與同步異步的使用

     2021-03-18 17:29  來源: 腳本之家   我來投稿 撤稿糾錯

      阿里云優(yōu)惠券 先領券再下單

    這篇文章主要介紹了React中setState的使用與同步異步的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

    在react中,修改狀態(tài)如果直接使用this.state,不會引起組件的重新渲染,需要通過 this.setState來對組件的屬性進行修改。

    1、this.setState的兩種定義方式

    定義初始狀態(tài)

    state = { count: 0 },

    如果此時有一個按鈕,點擊按鈕讓計數(shù)加1,我們可以有兩種寫法

    (1)傳遞對象

    this.setState({ count: this.state.count + 1})

    (2)傳遞函數(shù)

    this.setState((state, props) => ({ count: count + 1}))

    2、setState的兩種方式有什么不同?

    如果變更的state的值需要依賴于上一次的state的值,這種情況就需要用到函數(shù)的形式,比如以下這種情況

    addCount(){
    this.setState({ count: this.state.count + 1})
    this.setState({ count: this.state.count + 1})
    this.setState({ count: this.state.count + 1})
    }

    此時只會執(zhí)行一次+1的操作,因為在React內(nèi)部,會將多次setState合并操作,新的state由 Object.assgin({}, {count: 0}, { count: 1}) 合并所得,以上賦值會執(zhí)行三次,但因為count的值沒有更新,所以最終執(zhí)行的結果只+1,如果setState的賦值是函數(shù),那情況就不一樣了

    addCount(){
    this.setState((state, props) => ({ count: count + 1}))
    this.setState((state, props) => ({ count: count + 1}))
    this.setState((state, props) => ({ count: count + 1}))
    }

    這樣的操作會得到+3的效果,因為React會進行判斷,如果傳入的是函數(shù),那么將執(zhí)行此函數(shù),此時count的值就已經(jīng)被修改了

    3、setState是同步還是異步的?

    5星是異步的

    (1) 即我們通過this.setState修改了狀態(tài)之后,在它的下一行輸出state的值并不會得到新的值

    (2) 為什么是異步?

    有兩個原因,一是提高效率,每次修改state的值都會造成render的重新渲染,將多次修改state的值合并統(tǒng)一更新可以提高性能;二是render的更新會晚一些,如果render中有子組件,子組件的props依賴于父組件的state,props和state就不能保持一致

    (3) 如何獲取異步時的state值?

    1、在setState的回調(diào)函數(shù)中

    this.setState({
    count: this.state.count + 1}},
    ()=>{ console.log(this.state.count)})

    2、 在componentDidUpdate中獲取

    componentDidUpdate(){
    console.log(this.state.count)
    }

    5星是同步的

    (1) 即我們通過this.setState修改狀態(tài)之后,在它的下一行輸出state是新的值

    (2) 什么場景下是同步的?

    1、 原生js獲取dom元素,并綁定事件

    <button id="addBtn">點我+1</button>
    componentDidMount(){
    const addBtn = document.getElementById('addBtn')
    changeBtn.addEventListener('click',()=>{
    this.setState({ count: this.state.count + 1})
    console.log(this.state.message)
    })
    }

    2、計時器 setTimeout

    <button onClick={ e => this.addOne() }>點我+1</button>
    addOne(){
    setTimeout(()=>{ this.setState({ count: this.state.count + 1 })
    console.log(this.state.count ) },0)
    }

    到此這篇關于React中setState的使用與同步異步的使用的文章就介紹到這了,更多相關React setState同步異步內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

    來源:腳本之家

    鏈接:https://www.jb51.net/article/207580.htm

    申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

    相關文章

    熱門排行

    信息推薦