Redux表单域组件和验证

eNd*_*ddy 7 redux redux-form react-redux-form

我使用redux来隐藏和显示基于值的组件.

Redux表单文档提到以下内容:

应谨慎使用连接到多个字段,因为每次连接的任何字段都需要整个组件重新渲染.这可能是性能瓶颈.除非您绝对需要,否则您应该单独连接到您的字段.

我不清楚我的隐藏和显示基于单选按钮的字段的解决方案是否足够好,可以使用Fields警告谨慎使用.

您能否澄清我的组件是否值得使用Fields.如果没有,有什么替代方法可以实施?

另外,如何fields实现验证?

<div>
    <form>
      <Fields
       component={RadioButtonGroupField}
       names={['radioButtonGroup', 'nameTextField', 'nickNameTextField']}
      />
    </ form>
</div>

function RadioButtonGroupField(fields) {
    return(
      <div>
        <RadioButtonGroupComponent
          {...fields.radioButtonGroup.input}
          {...fields.radioButtonGroup.meta}
        />
        {
          (fields.radioButtonGroup.input.value === 'name' ||
          fields.radioButtonGroup.input.value === 'both') &&
          <NameTextFieldComponent
            {...fields.radioButtonGroup.input}
            {...fields.radioButtonGroup.meta}
          />
        }
        {
          (fields.radioButtonGroup.input.value === 'nickname' ||
          fields.radioButtonGroup.input.value === 'both') &&
           <NicknameTextFieldComponent
            {...fields.radioButtonGroup.input}
            {...fields.radioButtonGroup.meta}
          />
        }
      </div>
     );
  }
Run Code Online (Sandbox Code Playgroud)

dpw*_*pwr 1

还有另一种方法可以做到这一点,使用 redux-form 选择器(http://redux-form.com/6.0.5/docs/api/Selectors.md/)从你的 redux 存储中选择特定值mapStateToProps,然后有条件地渲染某些组件。

但是,我认为这Fields正是您在这种情况下应该使用的。我认为这个警告主要是警告人们不要将整个表单放入字段中,重新渲染这 3 个字段没什么大不了的。

首先导致创建的思维过程Fields可能是解决这个问题的最佳方法: https: //github.com/erikras/redux-form/issues/841