如何在react-redux中使用reducer状态的值更新组件的状态?

时间:2017-04-18 07:38:09

标签: javascript reactjs react-redux

我有减速器给我carReducer,我可以在EditCar组件中用作道具:

我的carReducer是:

export default function carReducer(state = {}, action) {
    switch (action.type) {
        case 'GET_SINGLECAR':
            return {
                ...state,
                next: action.payload
            }
            break;
    }
    return state;
}

在EditCar组件中,我将carReducer声明为:

    function mapStateToProps(state) {
        return {
            carReducer: state.carReducer
        }
    }

export default connect(mapStateToProps, mapDispatchToProps)(EditCar);

现在在同一个组件中,我想在组件加载之前使用此cardata更新我的intialState carReducer

constructor(props) {
    super(props);
    this.state = {
        cardata: {}
    }
}

我尝试使用componentWillReceiveProps,但这在undefinednextProps.carReducer中都给了this.props.carReducer

componentWillReceiveProps(nextProps) {
    if (nextProps.carReducer != this.props.carReducer) {
        this.setState({ cardata: nextProps.carReducer });
    }
} 

我是react-redux的新人,所以我们非常感谢您的帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

在这种情况下无需使用componentWillRecieveProps。只需将next替换为减速器中的carReducer

即可

答案 1 :(得分:0)

方法1 - 尝试使用componentDidMount()

componentDidMount() {
  this.setState = ({
    cardata: this.props.carReducer
  })
}

方法2 - 您可以尝试在构造函数本身

中执行此操作
constructor(props) {
  super(props);
  this.state = {
    cardata: props.carReducer
  }
}