簡體   English   中英

使用 props.change 更改 redux-form 中輸入字段的值

[英]Using props.change to change the value of an input field in redux-form

我有一個需要從后端檢索字段值的表單。 似乎成功檢索到值,但它沒有更新表單中的值。

我如何使用 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 值沒有更新。 我檢查了反應開發人員工具,該值只是“”。 我按照文檔中的更改說明進行操作 任何關於從這里去哪里的建議將不勝感激。 我是 react 和 redux-form 的新手。

首先,您必須發送它。 其次,您將void函數分配給變量而不調用它。 最后,我相信change接受三個參數 - form namefield namevalue

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM