1.22 要严格遵守状态是不可变的
一、要严格遵守状态是不可变的
默认情况下,修改状态的值跟上一次相同的情况下,是不会触发重新渲染的
内部可能会自检,需要注意!
如果定义了一个数组,那么先对数组做push,在进行set,回不生效,原因React没有检测到数据的变化,因此不会重新渲染
import { useState } from 'react' function App() { const [count, setCount] = useState(0) const [list, setList] = useState([ { id: 1, val: 111 }, { id: 2, val: 222 }, { id: 3, val: 333 }, ]) const handleClick = () => { setCount((c) => { return c + 1 }) // 错误做法 // list.push({ id: 4, val: 444 }) // setList(list) // 正确做法 setList([...list, { id: 4, val: 444 }]) } return ( <> <div>Default Template</div> <button onClick={handleClick}>点击</button> {count} <br /> <ul> {list.map((item) => { return <li key={item.id}>{item.val}</li> })} </ul> </> ) } export default App
最后更新于