javascript - 如何将 `destroyOnUnmount: false` 和 `forceUnregisterOnUnmount: false` 与 `enableReinitialize: true` 一起使用

标签 javascript reactjs react-redux redux-form

我有一个向导表单,用于创建和更新表单。我正在使用redux-form/immutable

当我从向导表单的 tab1 导航到 tab2 时,我丢失了表单 tab1 中的状态(用户输入)

我尝试过使用destroyOnUnmount: falseforceUnregisterOnUnmount: false没有enableReinitialize: true它适用于更新屏幕,但对于创建屏幕,在这种情况下我无法使用从 API 获取的现有值来初始化表单。

FUNCTIONAL FORM COMPONENT

const AlphaForm = () => {

  return (
    <Panel theme="light">
      <PanelHeader>FORM</Panel.Header>
      <PanelBody>
        <Field
          component={Check}
          label="abc"
          name="abc"
          type="checkbox"
        />
        .....................................
      </PanelBody>
    </Panel>
  );
};

Wrapper

let AlphaFormWrapper = reduxForm({
  destroyOnUnmount: false,
  forceUnregisterOnUnmount: false,
  enableReinitialize: true,
  form: 'alphaForm'
})(AlphaForm);

Connect

const AlphaConnect = connect(
  state => {
    return {
      initialValues: state.getIn(['alphaForm'])
    };
  },
)(AlphaFormWrapper);

最佳答案

使用 enableReinitialize: truekeepDirtyOnReinitialize: true 为我解决了上述问题

关于javascript - 如何将 `destroyOnUnmount: false` 和 `forceUnregisterOnUnmount: false` 与 `enableReinitialize: true` 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57885721/

相关文章:

javascript - 内容脚本中的 addEventListener 不起作用

javascript - 如何使用reactjs中的提交按钮获取输入并在html中显示

javascript - 类型错误 : Cannot read property 'error' of undefined on React Chrome Extension

react-native - redux 中的 action、reducer 和 store 有什么区别?

javascript - ReactJS + Redux : How to directly navigate to a page (skip login) if token is in local storage?

javascript - promise 如何与#then 和#json 一起使用?

javascript - 如何将凹坑测量轴中的一百万显示为 1000k 而不是 1m?

javascript - 鼠标悬停时如何打开链接

javascript - 服务变量分配数据但访问时始终未定义

reactjs - React+Redux 自定义 Hook(仅在特定条件下更新)