したいこと
Reactで連想配列のstate内にある項目を一部分だけ変更したい。
state = { a: array.a, b: array.b }
のようにしてもいいが、配列の中身が多すぎるとすっきりしたコードにならない。
試したけどうまくいかなかった方法
this.setState({ array.a: newA });
→ ナメすぎました。笑
解決策
うまくいった方法
this.setState({ array: { a: newA } });
これだけでできました。
多次元配列の場合はシンプルに
this.setState({ array1: { array2: { a: newA } } });
でいけます。
Hooksを使う場合
ついでにHooksのuseStateを使う場合も試しました
const [stateOfArray, setStateOfArray] = useState({});
setStateOfArray(state => ({ ...state, a: newA }));
これでstateOfArray配列にあるa要素が変更されました。