预填充redux-form表单进行更新

时间:2016-09-02 20:32:43

标签: reactjs redux-form

我是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)
}

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我最终创建了一个新动作,目的是清除props.initialValues。我传递了this.props.fields动作,它以正确的结构返回一个对象,但所有的fields属性都设置为空字符串。这看起来很复杂,但确实有效。

答案 1 :(得分:0)

它的一个解决方案是从redux-form容器类的父级传递enableReinitialize = {true}。代码应如下所示在父类中,我们称之为redux-form容器类。

<ReduxFormContainerClass enableReinitialize={true} />