如何修改useState状态钩子中存储对象的多个键值?
React useState 对象属性更新方案
React 的 useState 要求 state 是不可变的,不能直接修改原对象属性,必须传入新对象触发更新,有两种常用实现方式:
全量替换(仅适用于user对象只包含name、age两个属性的场景)
直接传入修改后的完整对象即可:setUser({name: "Joe", age: 25})增量修改(通用推荐写法)
用函数式更新+扩展运算符,保留原对象其他属性,仅覆盖需要修改的字段,同时避免闭包导致的state不是最新值的问题:setUser(prevState => ({ ...prevState, name: "Joe", age: 25 }))
注意:不要直接修改原state对象(比如
user.name = "Joe"后调用setUser(user)),这种写法React无法识别state变更,不会触发组件重渲染。
内容的提问来源于stack exchange,提问作者user16264388
相关产品推荐
相关产品推荐

