前提・実現したいこと
ReactのuseStateで配列の指定した要素のみを更新する方法が知りたいです。
発生している問題
useStateで配列に要素を新たに追加する方法はわかるが、配列の指定した要素のみを更新する方法がわからない。
該当のソースコード
ソースコードはサンプルです。
以下のようにすれば、animals
の末尾に"rabbit"が追加されるのは理解できています。
js
1const [animals, setAnimals] = useState(["dog", "cat", "pig", "bird"]); 2setAnimals(prevState => [...prevState, "rabbit"])
しかし、例えばanimals
の2つ目の要素である"cat"を"wolf"に更新したい場合、
setAnimals()の記述方法がわかりません。
試したこと
以下のように記述しましたが、Cannot set properties of undefined
が出てうまく更新できなかった。
js
1const [animals, setAnimals] = useState(["dog", "cat", "pig", "bird"]); 2setAnimals(prevState => { 3 const newAnimals = prevState 4 newAnimals[1] = "wolf" 5})
また、ネットでググりましたが、配列の指定した要素を更新するような書き方は見つかりませんでした。
もしかしたらuseStateでは実現できないのでしょうか?
どなたか方法がわかる方がいれば教えていただけると嬉しいです。
回答2件
あなたの回答
tips
プレビュー