nextProps和this.props总是具有相同的值

时间:2018-02-28 01:54:18

标签: reactjs redux immutable.js

componentWillReceiveProps(nextProps) {

    if (nextProps.group.data !== this.props.group.data) {
        console.log(true);
    }
}

group.data对象来自

const mapStateToProps = (state, props) => {
    return {

        group: {
            data: state.group.data,
            isFetching: state.group.isFetching,
            error: state.group.error
        }
    }
}

我正在使用redux模块来收集数据......

我知道nextPros对this.props的引用,我知道一个解决方案是使用Immutable.js,但我找不到使用它的好例子,我发现很多复杂的集成它,因为我已经如此很多模块没有Immutable。

有没有其他解决方案可以将newProps与this.props进行比较,或者是如何将Redutable与Redux一起使用的好例子。

谢谢, 卢卡斯佛朗哥

1 个答案:

答案 0 :(得分:3)

这意味着商店中的data对象没有变化,您需要确保在reducer中返回一个新对象,并且从不对其进行变异。例如:

// reducer for group
reducer (state = initialState, action) {
...
  // when your code is going to update data return a completely new object
  return {...state,
    data: { ...state.data, ...action.newData} 
    // never something like state.data.someProp = action.someProp
  }
...
}

我需要看到更多代码更加确定,主要是reducer。 但如果表达式(nextPros.group.data !== this.props.group.data)导致true,则可以肯定地说data对象的引用没有改变。