【React】useStateでオブジェクトの配列を編集する方法(メモ)
配列の編集やオブジェクトの編集方法は検索すると出てくるけど、オブジェクトの配列の場合が見つからなかったので、メモとして残しておきます。
オブジェクトの配列ってこんなやつ
[ { id: 1, name: '山田太郎', point: 10 }, { id: 2, name: '田中二朗', point: 15 }, { id: 3, name: '佐藤三郎', point: 0 } ]
例えば、佐藤さんのポイントを+1するボタンを設置してみます。
import { useState } from 'react' const User = () => { const initialData = [ { id: 1, name: '山田太郎', point: 10 }, { id: 2, name: '田中二朗', point: 15 }, { id: 3, name: '佐藤三郎', point: 0 } ] const [users, setUsers] = useState(initialData) const addPoint = (targetID) => { setUsers( users.map( user => ( { ...user, 'point': user.id == targetID ? user.point + 1 : user.point } )) ) } return ( <button onClick={() => addPoint(3)}>ポイントアップ!</button> ) } export default User
こんな感じ。
mapを使って一行ずつ処理。
条件にあった時だけ処理する三項演算子が便利。
コメントを書く