Next.js + AntDesignでフォームを実装中に
チェックボックス型のフォームを実装している時にはまった時の備忘録。
チェックボックスを変更してもフォームのvalues
が書き変わらなかった。
原因
Form
でonValuesChange
が指定されている状態で
Form.Item
にvaluePropName="checked"
を指定していたため、
form
のvalues
の中の"hoge"
が書きかわらなかった。
修正したコード
Form
にonValuesChange
を指定するのをやめ、
Form.Item
内でonChange
を指定するよう変更した。
Before
const [form] = Form.useForm()
...
<Form form={form} onFinish={onFinish} onValuesChange={handleChangeFuga}>
<Form.Item
name="hoge"
valuePropName="checked"
initialValue
>
<Checkbox>
Hoge
</Checkbox>
</Form.Item>
<Form.Item
name="fuga"
>
...
</Form.Item>
</Form>
After
const [form] = Form.useForm()
...
<Form form={form} onFinish={onFinish}>
<Form.Item
name="hoge"
valuePropName="checked"
initialValue
>
<Checkbox>
Hoge
</Checkbox>
</Form.Item>
<Form.Item
name="fuga"
onChange={handleChangeFuga}
>
...
</Form.Item>
</Form>