摘要:而不是在方法中在通過來獲取使用回調函數方法接收一個作為回調函數。這樣子直接輸出,回調函數,對比如果默認為輸入的結果是和渲染無關的狀態盡量不要放在中來管理通常中只來管理和渲染有關的狀態,從而保證改變的狀態都是和渲染有關的狀態。
原文: https://medium.com/@mweststra...
作者: Michel Weststrate
這篇文章原標題是3 Reasons why I stopped using React.setState,但是我對原文作者提出的論點不是很感冒,但是作者提出的三點對React新手來說是很容易忽略的地方,所以我在這里只提出部分內容,而且把標題改為使用React.setState需要注意的三點。
正文對React新手來說,使用setState是一件很復雜的事情。即使是熟練的React開發,也很有可能因為React的一些機制而產生一些bug,比如下面這個例子:
文檔中也說明了當使用setState的時候,需要注意什么問題:
注意:
絕對不要 直接改變this.state,因為之后調用setState()可能會替換掉你做的改變。把this.state當做是不可變的。setState()不會立刻改變this.state,而是創建一個即將處理的state轉變。在調用該方法之后訪問this.state可能會返回現有的值。
對setState的調用沒有任何同步性的保證,并且調用可能會為了性能收益批量執行。
setState()將總是觸發一次重繪,除非在shouldComponentUpdate()中實現了條件渲染邏輯。如果可變對象被使用了,但又不能在shouldComponentUpdate()中實現這種邏輯,僅在新state和之前的state存在差異的時候調用setState()可以避免不必要的重新渲染。
總結出來,當使用setState的時候,有三個問題需要注意:
1. setState是異步的(譯者注:不保證同步的)很多開發剛開始沒有注意到setState是異步的。如果你修改一些state,然后直接查看它,你會看到之前的state。這是setState中最容易出錯的地方。 setState這個詞看起來并不像是異步的,所以如果你不假思索的用它,可能會造成bugs。下面這個例子很好的展示了這個問題:
class Select extends React.Component { constructor(props, context) { super(props, context) this.state = { selection: props.values[0] }; } render() { return (
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81439.html
摘要:下面來逐步的解析圖里的流程。一將事務放進隊列中這里的可以傳也可以傳它會產生新的以一種的方式跟舊的進行合并。如果當前不在更新過程的話,則執行更新事務。以上即為的實現過程,最后還是用一個流程圖在做一個總結吧參考文檔 前言 學過react的人都知道,setState在react里是一個很重要的方法,使用它可以更新我們數據的狀態,本篇文章從簡單使用到深入到setState的內部,全方位為你揭開...
摘要:今天我們就來解讀一下的源碼。比較有意思,將定時器以方式提供出來,并且提供了方法。實現方式是,在組件內部維護一個定時器,實現了組件更新銷毀時的計時器更新銷毀操作,可以認為這種定時器的生命周期綁定了組件的生命周期,不用擔心銷毀和更新的問題。 1. 引言 React PowerPlug 是利用 render props 進行更好狀態管理的工具庫。 React 項目中,一般一個文件就是一個類,...
摘要:要實施這個方案,最大問題就是接口約定。討論地址是精讀做了什么如果你想參與討論,請點擊這里,每周都有新的主題,周末或周一發布。前端精讀幫你篩選靠譜的內容。 1 引言 setState 是 React 框架最常用的命令,它是用來更新狀態的,這也是 React 框架劃時代的功能。 但是 setState 函數是 react 包導出的,他們又是如何與 react-dom react-nativ...
摘要:區別在于傳入一個更新函數,就可以訪問當前狀態值。后面兩次會同步更新,分別輸出,很顯然,我們可以將次簡單規成兩類是一類中的又是一類,因為這兩次在不同的調用棧中執行。 寫業務代碼的時候 需要經常用到setState, 前幾天review代碼的時候, 又想了一下這個API, 發現對它的了解不是很清楚, 僅僅是 setState 是異步的, 周六在家參考了一些資料,簡單整理了下,寫的比較簡單...
摘要:新的值回調函數。官方注解是給組件做個標記需要重新渲染,并且將可選的回調函數添加到函數列表中,這些函數將在重新渲染的時候執行。一共做了兩件事一是通過執行方法來更新組件二是若方法傳入了回調函數則將回調函數存入隊列。 Q1 setState改變狀態之后,不會立即更新state值。所以,如果改變state值,react是什么時候進行組件的更新呢?setState()到底做了一些什么呢? A1 ...
閱讀 2044·2021-11-15 11:39
閱讀 3226·2021-10-09 09:41
閱讀 1491·2019-08-30 14:20
閱讀 3262·2019-08-30 13:53
閱讀 3325·2019-08-29 16:32
閱讀 3362·2019-08-29 11:20
閱讀 3018·2019-08-26 13:53
閱讀 775·2019-08-26 12:18