这个例子有点做作,但请耐心等待。假设我有两个函数作为 React 组件的成员:
var OrderApp = React.createClass({
getInitialState: function() {
return {
selectedOrders: {},
selectedLineItems: {}
};
},
setOrderSelected: function(order, newSelectedState) {
var mutation = {};
mutation[order.id] = {$set: newSelectedState};
var newSelectedOrders = React.addons(this.state.selectedOrders, mutation);
_.each(order.lineItems, function(lineItem) {
setLineItemSelected(lineItem, newSelectedState);
});
this.setState({selectedOrders: newSelectedOrders});
},
setLineItemSelected: function(lineItem, newSelectedState) {
var mutation = {};
mutation[lineItem.id] = {$set: newSelectedState};
var newSelectedLineItems = React.addons(this.state.selectedLineItems, mutation);
this.setState({seelctedLineItems: newSelectedLineItems});
}
});
Run Code Online (Sandbox Code Playgroud)
在调用 OrderApp.setOrderSelected(order, true) 完成时,只有最后一个 lineItem 选择状态在我的组件状态中似乎发生了变化。我猜这是因为 React 正在批处理对 setState 的调用,所以当我调用时:
var newSelectedLineItems = React.addons(this.state.selectedLineItems, mutation); …Run Code Online (Sandbox Code Playgroud)