来自 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;