【问题标题】:Using props.change to change the value of an input field in redux-form使用 props.change 更改 redux-form 中输入字段的值
【发布时间】:2018-12-04 18:00:37
【问题描述】:

我有一个表单需要从我的后端检索字段的值。它似乎成功检索了值,但它没有更新表单中的值。

我如何使用 props.change 尝试更新字段“foo”:

const asyncValidate = (values, dispatch, props) => {
  return axios
  .get(URL)
  .then( (response) => {
    var whyNoChange = props.change("foo", response.data.foo)
    console.log(whyNoChange)
  });
}

Foo 组件:

const fooField = (props) => (
  <Form.Field 
  error={props.meta.touched && props.meta.error ? true : false}>
  <Input
      placeholder='Change me'
      onBlur={props.input.onBlur}
      onFocus={props.input.onFocus}
      onChange={(param, data) => props.input.onChange(data.value)}
      value={props.input.value}
  />
  {
    props.meta.touched && 
    props.meta.error && 
    <span style={{color: '#9f3a38'}}>
      {props.meta.error}
    </span>
  }
 </Form.Field>
)

我的表格:

 class MyForm extends Component { 
   // ...
   render () {
     return (
       <Form>
        <Field
         name='foo'
         component={fooField}
       />
      </Form>
   )
 }}

 MyForm = reduxForm({
   form: 'myform',
    validate,
    asyncValidate
 })(MyForm)

最后是控制台在调度 redux-form/change 时记录的内容......

{…}
 >meta: Object { form: "myform", field: "foo", touch: false, … }
  payload: "foo-from-backend"
  type: "@@redux-form/CHANGE"

但是我的 foo-field 值没有得到更新。我检查了反应开发者工具,值只是“”。我按照documentation 的更改方向进行操作。任何关于从哪里去的建议将不胜感激。我是反应和 redux-form 的新手。

【问题讨论】:

    标签: javascript reactjs redux redux-form


    【解决方案1】:

    首先,您必须调度它。其次,您将 void 函数分配给变量而不调用它。最后,我相信change 接受三个参数 - form namefield namevalue

    const asyncValidate = (values, dispatch, props) => {
      return axios
      .get(URL)
      .then( (response) => {
        dispatch(change("form name", "foo", response.data.foo))
      });
    }
    

    【讨论】:

    • 哇,我可以发誓我试过这个 - 谢谢,这有效!感觉 props.change 也应该起作用,不是吗?在我上面链接的文档中,函数是“更改(字段:字符串,值:任何):函数”列在 api 的“道具”下......无论如何,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2018-02-09
    • 2017-12-27
    • 1970-01-01
    相关资源
    最近更新 更多