簡體   English   中英

反應,避免突變 state 的原因

[英]React, reason for avoiding mutating state

我知道變異 state 可以對抗PureComponent (或類似的)還有其他不變異 state 的理由嗎?

我想知道第三種方法可以嗎?

 // The Right Way: // copy the existing items and add a new one addItemImmutably = () => { this.setState({ items: [...this.state.items, this.makeItem()] }); }; // The Wrong Way: // mutate items and set it back addItemMutably = () => { this.state.items.push(this.makeItem()); this.setState({ items: this.state.items }); }; // is this ok? (mutate but set state with new copy) addItem3rdWay = () => { this.state.items.push(this.makeItem()); this.setState({items: [...this.state.items]}); }

您可以將state視為您的數據庫。

您不直接改變數據庫,而是通過API修改數據庫。

setStateAPI

當然,你可以直接修改你的數據庫,但是其他組件將很難檢索這些數據,因為現在這些數據不一致,因為有人沒有使用框架為你提供的API

如果你真的喜歡變異 state 的方式,你可以使用Vue ,Vue 就是這樣設計的。

這是一個示例:您已經觸發了一個異步方法,該方法使用您當前的 state 數據發送請求。 與此同時,您執行了一個 function 突變 state。 這將導致異步 function 發送突變的 state,盡管它打算在突變之前發送 state。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM