我可以使用@@ redux-form / INITIALIZE操作吗?

时间:2018-06-16 05:10:51

标签: redux redux-form

我有一个组件,其虚拟结构如下所示:

  <Header>
           My Status
     </Header>
      <Form>
        <Field.Text> Name: </Field.Text>
      </Form>
      <Footer>
        <a> foo link </a>
      </Footer>

因此我在组件中的标题将包含我的表单是否已保存的状态,或者在保存时是否遇到任何错误?

我的问题是我查看了redux-form的源代码,在表单的初始化过程中,我观察到了这一点 发送@@redux-form/INITIALIZE行动。当我重置此表单时,我想清除标题中的所有文本。

这是一个很好的做法,直接抓住行动 我的reducer中的@@redux-form/INITIALIZE@@redux-form/RESET并将文本设置为null?我试图提出这个问题,因为在他们的文档中我找不到任何与他们在reducer中使用动作有关的内容。 如果这不是一个好习惯,那你会碰巧知道这有什么缺点吗?

1 个答案:

答案 0 :(得分:0)

是的,基于redux-form github内的一些问题,以及从社区收到的加号的数量,我们可以肯定地说,听reduxform动作是正常的,我相信这是HOC的预期目的之一是减少需要为表单定义的样板操作类型的数量。

基于此链接https://github.com/erikras/redux-form/issues/2459,我们可以肯定地说,在某些时候,其目的是记录redux形式的actionType。

也基于此,https://github.com/erikras/redux-form/issues/2178#issuecomment-283324287

我最终将这样的动作导入了我的reducer中:

import { INIT, RESET } from 'redux-form/lib/actionTypes'

cont foo = (state = {}, action) => {
  case INIT:
     return {..state}
  case default:
     return state;
}

注意:仅当您不修改表单状态,而是修改其他一些对等组件(取决于所发出的formAction)时,才这样做(更可能是建议)。