這是因爲處理state
變量具有自己的功能。有兩種方法我可以想到。一種是通過調用狀態函數直接改變this.state
(當然,我知道它是不鼓勵的),然後調用forceUpdate()
並處理它帶來的問題。另一個是做回調函數。哪一種是正確的?forceUpdate()與this.setState()與回調
下面是我正在談論的一個例子。我正在使用Vis.js,他們的DataSet對象允許您將數據添加到現有數據集 - 例如節點和邊。
addDataToGraph: function(data) {
// Is this the proper way to do something like this?
this.state.graphData.nodes.add(nodes);
this.state.graphData.edges.add(edges);
this.forceUpdate();
// Or is this the right way - the question I am posing here
this.setState({
currentChunk: data.currentChunk,
totalChunks: data.totalChunks
}, function() {
this.state.graphData.nodes.add(data.nodes);
this.state.graphData.edges.add(data.edges);
}.bind(this));
}
我會用第二種方法。直接操縱狀態繞過了'setState'機制帶來的許多性能優勢,而且您可能會遇到邊緣情況並且將來會有事情中斷。 – rossipedia