Taro中如何正确使用React的useState更新对象属性?

萌新.丽敏 阅读 6

我在Taro里用React写页面,想更新state里的一个对象属性,但发现视图没刷新。我试过直接修改对象属性再setState,也试过展开运算符,都不行。是不是Taro对React的状态更新有特殊处理?

下面是我的代码:

const [userInfo, setUserInfo] = useState({ name: '张三', age: 20 });

// 这样写页面不更新
userInfo.age = 21;
setUserInfo(userInfo);

// 也不行
setUserInfo({ ...userInfo, age: 21 });
我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
迷人的俊俊
在Taro里用React更新对象属性确实容易踩坑,我也是折腾了好一阵才搞清楚。

先说你的代码问题。其实第二段代码是对的,但你可能忽略了状态更新是异步的,直接修改对象引用可能会导致问题。Taro本身对React状态管理没有特殊处理,问题出在我们怎么更新state。

给你个可靠的写法:
const [userInfo, setUserInfo] = useState({ name: '张三', age: 20 });

// 正确更新方式
setUserInfo(prevState => {
return { ...prevState, age: 21 };
});


这方法亲测有效,用了回调函数来获取最新的state。血泪教训告诉我,直接操作原对象再setState很容易出问题,因为React检测不到引用变化。

记得把所有需要更新的字段都放进去,别想着只改一个属性就能自动合并其他值,不然又要掉进另一个坑里了。这个写法虽然看起来麻烦点,但稳定可靠。
点赞
2026-03-27 08:21