来自 Redux 的 initialValues 没有正确更新
initialValues from Redux are not updating correctly
我有一个看起来像这样的组件,
const errorAnalysisName = { name: undefined }
const ReduxForm = (props: ReduxFormProps) => {
const { handleSubmit, children } = props
return <Form onSubmit={handleSubmit}>{children}</Form>
}
const connectedForm = connect(state => {
errorAnalysisName.name = 'insideRedux'
return {
errorAnalysisName: 'insideRedux'
}
}, null)(ReduxForm)
export default reduxForm({
form: 'CreateWizard',
enableReinitialize: true,
validate,
destroyOnUnmount: false,
initialValues: {
baseScheduleChoice: 'load',
newScheduleChoice: 'load',
currentIndex: 0,
name: errorAnalysisName.name
}
})(ReduxForm)
字段 name
没有更新到 insideRedux
,有人看到我在这里遗漏了什么吗?
我想从我的状态传递一个初始值,但尝试这样做不会更新 reduxForm 中的 initialValues 对象。
如果你想使用 enableReinitialize,你将不想在渲染 redux 表单时设置 initialValues 道具,然后如果道具发生变化,表单将重新初始化。
为简洁起见,我对您的示例进行了一些修改:
const CreateWizard = reduxForm({
form: 'CreateWizard',
enableReinitialize: true,
destroyOnUnmount: false
})(({ handleSubmit, children }) => (
<form onSubmit={handleSubmit}>{children}</form>
));
const Container = connect(state => ({
errorAnalysisName: state.errorAnalysisName
})(props => (
<CreateWizard initialValues={{
baseScheduleChoice: 'load',
newScheduleChoice: 'load',
currentIndex: 0,
name: props.errorAnalysisName
}} />
));
export default Container;
我有一个看起来像这样的组件,
const errorAnalysisName = { name: undefined }
const ReduxForm = (props: ReduxFormProps) => {
const { handleSubmit, children } = props
return <Form onSubmit={handleSubmit}>{children}</Form>
}
const connectedForm = connect(state => {
errorAnalysisName.name = 'insideRedux'
return {
errorAnalysisName: 'insideRedux'
}
}, null)(ReduxForm)
export default reduxForm({
form: 'CreateWizard',
enableReinitialize: true,
validate,
destroyOnUnmount: false,
initialValues: {
baseScheduleChoice: 'load',
newScheduleChoice: 'load',
currentIndex: 0,
name: errorAnalysisName.name
}
})(ReduxForm)
字段 name
没有更新到 insideRedux
,有人看到我在这里遗漏了什么吗?
我想从我的状态传递一个初始值,但尝试这样做不会更新 reduxForm 中的 initialValues 对象。
如果你想使用 enableReinitialize,你将不想在渲染 redux 表单时设置 initialValues 道具,然后如果道具发生变化,表单将重新初始化。
为简洁起见,我对您的示例进行了一些修改:
const CreateWizard = reduxForm({
form: 'CreateWizard',
enableReinitialize: true,
destroyOnUnmount: false
})(({ handleSubmit, children }) => (
<form onSubmit={handleSubmit}>{children}</form>
));
const Container = connect(state => ({
errorAnalysisName: state.errorAnalysisName
})(props => (
<CreateWizard initialValues={{
baseScheduleChoice: 'load',
newScheduleChoice: 'load',
currentIndex: 0,
name: props.errorAnalysisName
}} />
));
export default Container;