2

ユーザーがテキストフィールドにテキストを入力するとすぐに、ミューテーターを実装してテキストを大文字に変換するさまざまな方法を試しました。しかし、まだ成功していません。エリックが提供したは正しいようですが、何かが足りないかもしれません。

/** Converts a form value to uppercase **/
const upper = ([name], state, { changeValue }) => {
  changeValue(state, name, (value) => value.toUpperCase())
}


<Form
  onSubmit={onSubmit}
  mutators={{
    ...arrayMutators,
    upper
  }}
  render={({
    handleSubmit,
    mutators: { push, pop, upper }, // injected from final-form-arrays above
    pristine,
    reset,
    submitting,
    values
  }) => {
    return (
      <form onSubmit={handleSubmit}>
        <div>
          <label>Company</label>
          <Field name="company" component="input" onChange={(e) => upper('company')} />
        </div>
      </form>
    )}
  }
/>

値が定義されていないためtoUpperCase、値を呼び出すとエラーがスローされます。valueどんな助けにも本当に感謝します!

更新: 2018 年 10 月 27 日

この問題を解決するために、パーサーも使用できることに気付きました。

upper = value => {
  return value ? value.toUpperCase() : ''
}


<Field name="company" component="input" parse={this.upper} />

ミューテーターがどのように機能するか、および私のコードのエラーは何かをまだ探しています。

試行済み: 既存のフィールドに基づいて状態を変更する

外部ユーザー アクションからフィールド値を設定/変更する方法

4

1 に答える 1