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

问题描述 投票:1回答:1
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,但我找不到使用它的好例子,我发现很多复杂的集成它,因为我已经有很多模块没有不可改变的。

是否有任何其他解决方案来比较newProps与this.props或一个很好的例子如何使用Redutable与Immutable。

谢谢卢卡斯佛朗哥

reactjs redux immutable.js
1个回答
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对象的引用没有改变。

© www.soinside.com 2019 - 2024. All rights reserved.