ユーザーがテキストフィールドにテキストを入力するとすぐに、ミューテーターを実装してテキストを大文字に変換するさまざまな方法を試しました。しかし、まだ成功していません。エリックが提供した例は正しいようですが、何かが足りないかもしれません。
/** 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} />
ミューテーターがどのように機能するか、および私のコードのエラーは何かをまだ探しています。
試行済み: 既存のフィールドに基づいて状態を変更する