Redux Form:initialValues 不设置表单值

Tsa*_*mba 3 reactjs redux redux-form

我只想在 redux-form 中设置和呈现表单的初始值。数据在 redux 中,我相信我的映射是正确的……但没有填充表单。该表单适用于插入,但现在我正在连接它以进行更新。

Redux 表单 7.2.0

形式:

...
<div className="form-group">
    <div className="col-md-2 control-label">Name</div>
    <div className="col-md-10">
        <Field 
            label="Name"
            name="app_cat_name" 
            component={input}
            validate={required} />
    </div>
</div>
<div className="form-group">
    <div className="col-md-2 control-label">Description</div>
    <div className="col-md-10">
        <Field 
            label="Description"
            name="app_cat_descr" 
            component={textArea}
            validate={required} />
    </div>
</div>
...
Run Code Online (Sandbox Code Playgroud)

mapStateToProps:

const mapStateToProps = state => {
    let values = { 
        initialValues: state.category
    };
    return values;
}
Run Code Online (Sandbox Code Playgroud)

...此时在调试时,“值”具有正确的对象并且 mapStateToProps 正在工作。

连线:

export default reduxForm({
    form: "CategoryForm",
    enableReinitialize: true
})(connect(mapStateToProps, { saveCategory, getCategories, getCategoriesCount })(CategoryForm));
Run Code Online (Sandbox Code Playgroud)

...无论有没有“enableReinitialize”,结果都是一样的。

我什至尝试将它传递到表单中,但结果相同 - 表单字段为空:

<form onSubmit={handleSubmit(this.onSubmit)} initialValues={initialValues}>
Run Code Online (Sandbox Code Playgroud)

cas*_*ber 6

我相信您的问题是您调用reduxFormvs的顺序connect。在您当前的代码中,您的连接组件被 redux-form 包装,这意味着在运行时 React 树看起来像

<ReduxForm>
    <ConnectedComponent>
        <CategoryForm />
    </ConnectedComponent>
</ReduxForm>
Run Code Online (Sandbox Code Playgroud)

正因为如此,您所提取的初始值state实际上并没有被传递到连接表单中。

尝试将您的“连线”代码更改为

export default connect(
    mapStateToProps,
    { saveCategory, getCategories, getCategoriesCount }
)(reduxForm({ form: "CategoryForm", enableReinitialize: true })(CategoryForm));
Run Code Online (Sandbox Code Playgroud)