12

React Formik で Field コンポーネントの onChange を処理しようとしていますが、うまくいきません。また、次の方法で Formik コンポーネントの外部で処理しようとしました。

handleChange(e) {
  console.log('changing');
}
<Field type="radio" name="players" value="1" onChange={e => this.handleChange(e)}/>

しかし、私は警告を受けています:

コンポーネントは、タイプ テキストの制御されていない入力を制御されるように変更しています。入力要素は、制御されていない状態から制御されている状態 (またはその逆) に切り替えるべきではありません。

今のところ、私のコードは次のようになります。

<Formik
  onChange={() => {
    console.log('changing');
  }}
  onSubmit={(values) => {
    console.log('submitted');
  }}
>
{({ isSubmitting, handleChange }) => (
  <Form>
    <InputWrapper>
       <span>1</span>
       <Field type="radio" name="players" value="1" onChange={handleChange}/>
       <span>2</span>
       <Field type="radio" name="players" value="2" onChange={handleChange}/>
    </InputWrapper>
    <button type="submit" disabled={isSubmitting}>
       {isSubmitting ? 'Loading..' : 'Start'}
    </button>
  </Form>
)}
</Formik>

ヒント/アイデアはありますか?

4

3 に答える 3

14

Formik フィールドに onBlur:handleBlur を導入する際に発見した問題の 1 つは、それが Formik Validation をオーバーライドすることです。

使用するonKeyUp={handleChange}

これは上記の問題を解決しました

于 2020-01-16T14:50:07.573 に答える