用props.Initialize()进行redux-form初始化



我们最近有一些奇怪的行为(使用6.7.0(。我们使用诸如:

的代码中的ComponentDidmount((/componentWillMount((初始化数据。
componentWillMount() {
    this.props.initialize({type:'http',field:'A Value'});
    ...
}

但是,只有当我们执行此初始化代码时,我们的提交函数没有收到要编辑的值,而是收到初始功能。同样,在编辑值时,不再调用onChange((侦听器。另一方面,位于表单/myform的状态已正确更新,我可以看到在那里更新的值。如果我将调用((替换为每一个属性的更改操作的调用((:

this.props.dispatch(change("myform","type",'http'));
this.props.dispatch(change("myform","field",'A Value'));

然后它起作用!似乎initialize((替换了整个对象并打破了一些内部引用。

使用初始值似乎也可以正常工作。

周围的许多示例都在使用props.initialize((,但我们无法使其起作用。在什么上下文中,应称为props.initialize((?

我必须使用页面加载数据库中的现有数据填充我的表单,并在更改时对其进行更新。下面的方法对我来说很好。

确保设置enableReinitialize&的值keepDirtyOnReinitializetrue

export default reduxForm({
    validate,
    form : 'YourFormName',
    enableReinitialize: true,
    keepDirtyOnReinitialize : true
})(connect(mapStatetoProps, { actionReducers }(YourClassName))

ComponentDidMount()的fire this.props.intialize()。现在使用状态来确保它仅发生一次,而不是每次更新任何组件时。

componentDidMount(){
   this.props.dispatch(actionReducer(parameter)).then(()=>{
      this.props.initialize(this.props.data)
      this.setState({load:true})
   })
}

最新更新