欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入掌握 react的 setState的工作機(jī)制

 更新時間:2017年09月27日 11:38:50   作者:一歩  
本篇文章主要介紹了深入掌握 react的 setState的工作機(jī)制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

react 是單向數(shù)據(jù)流,若想要改變已有組件的外觀,我們只能通過更改組件的 props 或者更新組件的 state。在 react 項目的代碼中我們操作最多的就是 this.setState 方法。下面對 setState 方法進(jìn)行詳細(xì)的說明。

<!--more -->

setState要點(diǎn):react 框架為了提高性能,會對 state 的更新進(jìn)行收集、合并、再進(jìn)行一次批量的狀態(tài)更新。這種機(jī)制常常導(dǎo)致一些意想不到的情況。

setState 有兩種調(diào)用形式:

向 setState 傳遞對象
setState()并不會立即觸發(fā) state 的更新。

//this.state.demo = 1;
handleClick = () => {
  this.setState({demo: 2});
  console.log(this.state.demo);// 1
}

1、🔔注意:在 addEventListener、setTimeout、ajax 回調(diào)中 this.setState 是立即觸發(fā)的。

2、setState 會合并更新,可能會造成狀態(tài)更新的丟失

handleClick = () => {
  this.setState({demo: this.state.demo + 1});
  this.setState({demo: this.state.demo + 1});
}
//click 之后 demo 為2而不是3

綜上:在同一代碼塊中不要多次調(diào)用 this.setState 方法

react 的 setState 還提供了另一種調(diào)用形式: this.setState(callbackFunc)

this.setState((previousState, currentProps) => {
  return { ...previousState, foo: currentProps.bar };
});

該語法和直接為 setState 傳遞對象不同,不會合并更新。

// demo + 1
handleSyncStateChange = () => {
  this.setState({
    demo: this.state.demo + 1
  });
  this.setState({
    demo: this.state.demo + 1
  });

}
// demo + 2
handleAsyncStateChange = () => {
  this.setState((preState, preProps) => {
    return {
      demo: preState.demo + 1
    }
  });
  this.setState((preState, preProps) => {
    return {
      demo: preState.demo + 1
    }
  });
}

refs

Async Nature Of setState

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • React避坑指南之useEffect 依賴引用類型問題分析

    React避坑指南之useEffect 依賴引用類型問題分析

    這篇文章主要介紹了React避坑指南之useEffect 依賴引用類型問題分析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • React組件封裝中三大核心屬性詳細(xì)介紹

    React組件封裝中三大核心屬性詳細(xì)介紹

    這篇文章主要為大家介紹了React組件實(shí)例三大屬性state props refs使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • react ant protable自定義實(shí)現(xiàn)搜索下拉框

    react ant protable自定義實(shí)現(xiàn)搜索下拉框

    這篇文章主要介紹了react ant protable自定義實(shí)現(xiàn)搜索下拉框,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • React彈窗使用方式NiceModal重新思考

    React彈窗使用方式NiceModal重新思考

    這篇文章主要為大家介紹了React彈窗使用方式NiceModal重新思考分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 使用react-dnd編寫一個可拖拽排列的list

    使用react-dnd編寫一個可拖拽排列的list

    這篇文章主要為大家詳細(xì)介紹了如何使用react-dnd編寫一個可拖拽排列的list,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • React中useCallback useMemo到底該怎么用

    React中useCallback useMemo到底該怎么用

    在React函數(shù)組件中,當(dāng)組件中的props發(fā)生變化時,默認(rèn)情況下整個組件都會重新渲染。換句話說,如果組件中的任何值更新,整個組件將重新渲染,包括沒有更改values/props的函數(shù)/組件。在react中,我們可以通過memo,useMemo以及useCallback來防止子組件的rerender
    2023-02-02
  • 基于react項目打包c(diǎn)ss引用路徑錯誤解決方案

    基于react項目打包c(diǎn)ss引用路徑錯誤解決方案

    這篇文章主要介紹了基于react項目打包c(diǎn)ss引用路徑錯誤解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • react中的雙向綁定你真的了解嗎

    react中的雙向綁定你真的了解嗎

    這篇文章主要為大家詳細(xì)介紹了react中的雙向綁定,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • React Hooks如何主動更新Hooks組件

    React Hooks如何主動更新Hooks組件

    這篇文章主要介紹了React Hooks如何主動更新Hooks組件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • React+EggJs實(shí)現(xiàn)斷點(diǎn)續(xù)傳的示例代碼

    React+EggJs實(shí)現(xiàn)斷點(diǎn)續(xù)傳的示例代碼

    這篇文章主要介紹了React+EggJs實(shí)現(xiàn)斷點(diǎn)續(xù)傳的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論