[...arr]は同じ配列をコピーしています。Reactはそれが異なっていることを確認し、再レンダリングします。
[...arr]
jsxsetArr([...arr])
setArr([...arr])
jsxconst [arr, setArr] = useState([{ id: 1 }]) let newArr = { id: 2 } setArr((arr) => [...arr, newArr])
const [arr, setArr] = useState([{ id: 1 }]) let newArr = { id: 2 } setArr((arr) => [...arr, newArr])