以编程方式更改Redux-Form字段值

tav*_*ven 27 javascript reactjs redux redux-form

当我使用redux-formv7时,我发现没有办法设置字段值.现在在我form,我有两个select组件.当第一个select组件值发生变化时,第二个值将清晰.

在类渲染中:

<div className={classNames(style.line, style.largeLine)}>
  <div className={style.lable}>site:</div>
  <div className={style.content}>
    <Field
      name="site"
      options={sites}
      clearable={false}
      component={this.renderSelectField}
      validate={[required]}
    />
  </div>
</div>

<div className={classNames(style.line, style.largeLine)}>
  <div className={style.lable}>net:</div>
  <div className={style.content}>
    <Field
      name="net"
      options={nets}
      clearable={false}
      component={this.renderSelectField}
      validate={[required]}
      warning={warnings.net}
    />
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

现在我添加select更改挂钩,如何更改其他select

renderSelectField = props => {
  const {
    input,
    type,
    meta: { touched, error },
    ...others
  } = props
  const { onChange } = input
  const _onChange = value => {
    onChange(value)
    this.handleSelectChange({ value, type: input.name })
  }
  return (
    <CHSelect 
      error={touched && error}
      {...input}
      {...others}
      onChange={_onChange}
      onBlur={null}
    />
  )
}
Run Code Online (Sandbox Code Playgroud)

Shu*_*tri 35

您可以使用onChange逻辑this.handleSelectChange({ value, type: input.name })并使用changeredux-form中的操作

根据文件:

change(field:String,value:any):Function

更改Redux存储中字段的值.这是一个绑定的动作创建者,因此它不返回任何内容.

码:

handleSelectChange = (value, type) => {
     if(type === "site") {
          this.props.change('net', "newValue");
     }
}
const mapDispatchToProps = (dispatch) => {
   return bindActionCreators({change}, dispatch);
}
Run Code Online (Sandbox Code Playgroud)

  • 从“ redux-form”中导入import {change};` (7认同)
  • 如果您从“redux-form”导入“change”,则参数为:“change(form: string, field: string, value: any, touch?: boolean, permanentSubmitErrors?: boolean): FormAction” (7认同)
  • 是否有同时设置多个字段的 API?不在初始值期间 (2认同)
  • 这对于 `&lt;Field&gt;` 组件的 `component='select'` 变体如何工作? (2认同)