Return 来自 mapState 的 Redux 表单字段的值在更新时会发生变化。

Return a value to a Redux-form Field from mapState that changes when updated.

我正在使用 Redux-Saga 来 return 数据状态。我想采用该状态并将其设置为 Redux-Form 中的 Field 值。我想我可以使用

dispatch(change('form', 'field', 'value')); 

在 saga returns 值之后处理这个问题。从而防止比赛事件。我在 HOC 的 mapStateToProps 中拥有我需要的值。无论如何要注意对该道具的更改并在更改时设置 Redux 形式的值?

到目前为止我研究过的事情包括设置新的初始值。很高兴提供任何必要的代码,但我想我应该从这里开始,看看与制作文字墙相比,什么能真正帮助解决这个问题。

我通常会连接一个 mapDispatchToProps 函数,它将为我进行更改并在组件的 componentWillReceiveProps.

中调用它

我假设你有 mapStateToProps:

const mapStateToProps = state => ({
    myValue: state.myValue
});

有一个

const mapDispatchToProps = dispatch => ({
    changeFormValue: value => dispatch(change('form', 'field', value))
});

现在在你的 componentWillReceiveProps(nextProps) 中做:

if(this.props.myValue !== nextProps.myValue) {
    this.props.changeFormValue(nextProps.myValue);
}
componentDidUpdate(prevProps) {
  if(this.props.propOfInterest != prevProps.propOfInterest) {
    //dispatch change()
  }
}

您可以在 componentDidUpdate() 中获取更新; componentWillReceiveProps() 从 React 16.3 开始弃用,并将在 React 17 中删除