【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を使って一行ずつ処理。
条件にあった時だけ処理する三項演算子が便利。
コメントを書く