前提
以下のようなオブジェクトのstateで、stateの中身である「type」を変更して、stateの中身を変更したいと考えています。
const [item, setItem] = useState({}) // stateの[type]を変更 (ここでは割愛していますが、セレクトで変更しています) し、中身を変更する処理 const handleChangeType = useCallback( (e) => { const value = e.target.value switch (value) { case 'a': setItem({ type: value, hobby: '' }) case 'b': setItem({ type: value, work: [{ type: '', place: '' }] }) case 'c': setItem({ type: value, hobby: '', option: '' }) case 'd': setItem({ type: value, pet: '' }) default: return } }, [item] )
発生しているエラー
上記の実装では、typeは変わるが、その他はtype変更前のまま、または一部分だけ(例、"a"に切り替えているのに、petもある)が残ってしまいます。
実現したいこと
現在のセレクトでtypeを変更した際に、setItemのオブジェクトの形にしたい。
回答1件
あなたの回答
tips
プレビュー