我一直在尋找一些示例代碼反應過來(在antd文檔),我注意到他們的代碼等同於:React setState直接修改prevState的分支?
this.setState(prevState => { prevState.name = "NewValue"; return prevState; });
這看起來有點調皮,但它實際上破壞任何東西?由於它使用箭頭函數,因此即使React在後臺對它們進行批處理,也不會中斷正在應用的更改的順序。
當然,setState旨在期望一個部分狀態,因此可能會出現性能副作用,因爲它可能會嘗試將整個狀態應用於自身。
編輯:(響應於@Sulthan)
實際的代碼是這樣的:
handleChange(key, index, value) {
const { data } = this.state;
data[index][key].value = value;
this.setState({ data });
}
N.B.數據是一個數組,所以它只是被引用複製然後發生了變異。
它實際上完全錯誤,因爲它甚至不使用箭頭函數來獲取最新狀態。
它來自於可編輯的表格例子在這裏:https://ant.design/components/table/
你能鏈接這個例子嗎?箭頭函數將返回賦值的結果,並且絕對看起來不正確。 – Sulthan
@Sulthan會將其添加到帖子中。 – DanH
你的例子根本就不相同。這意味着完全不同的東西。 – Sulthan