我是React的新手。正如教程所建议的那样,我正在为我的应用程序使用redux-form。你如何用这个插件在CRUD中做'U'?为了更新,我调用了我的posts_create类。如果我在this.props.params上检测到一个id,那么我认为它是一个更新,获取数据,并且由于这个函数而设置了initialValues:
function mapStateToProps(state){
console.log ("in mapStateToProps")
console.log (state)
return {
initialValues:state.posts.post
}
}
如果没有,它必须是一个创建,我不做提取。好吧,一切正常,有点。一次更新后,下次我转到“新建”时,上一次更新的数据仍然在表单中。我没有提取数据。我在componentWillMount()中尝试了以下操作,但重置似乎不起作用。无论如何这看起来很笨拙:
componentWillMount(){
if (this.props.params.id){
this.props.fetchPost(this.props.params.id)
this.isNew = false;
}
else {
console.log ("reseting form")
this.props.resetForm();
this.isNew = true;
}
console.log ("isNew: " + this.isNew)
}
感谢您的帮助。
答案 0 :(得分:0)
我最终创建了一个新动作,目的是清除props.initialValues。我传递了this.props.fields动作,它以正确的结构返回一个对象,但所有的fields属性都设置为空字符串。这看起来很复杂,但确实有效。
答案 1 :(得分:0)
它的一个解决方案是从redux-form容器类的父级传递enableReinitialize = {true}。代码应如下所示在父类中,我们称之为redux-form容器类。
<ReduxFormContainerClass enableReinitialize={true} />