小编tno*_*ood的帖子

正确处理多个顺序状态更新

这个例子有点做作,但请耐心等待。假设我有两个函数作为 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)

javascript immutability reactjs

3
推荐指数
1
解决办法
2011
查看次数

标签 统计

immutability ×1

javascript ×1

reactjs ×1