【发布时间】:2020-12-13 17:37:57
【问题描述】:
我正在寻找某个查询字符串,当它在页面加载时传递时,我需要将我的用户状态更新为“高级”。我有:
useEffect(() => {
const queryString = require('query-string');
const values = queryString.parse(window.location.search);
console.log('before' + user.premium);
if (values.premium !== ''){
setUser({...user, premium: true});
}
console.log('after' + user.premium);
}, []);
我正在使用 React 功能组件,我的用户是一个包含许多其他值的对象,除了“高级”键。据我了解,传递空数组 [] 将导致 useEffect 仅在页面加载时运行。但是,这样做会出现错误:
React Hook useEffect has a missing dependency: 'user'.。但是,当我在该数组中包含 user 时,页面会不断重新加载(因为我正在更新它的值)。我也尝试过传入setUser,但没有成功。
【问题讨论】:
-
setUser(prevUser => ({ ...prevUser, premium: true })) -
@PatrickRoberts 你能教我吗?你们所有的高级代表有时评论答案而不是实际提交答案背后的理论是什么?
-
@Rustang 已经多次回答了这个完全相同的问题的琐碎变化......仍在尝试找到其中一个要关闭的重复项。
-
@Rustang 在评论中提供足够的信息可能会更容易解决问题,但它本身就是一个不完整或糟糕的答案。
-
但一个完整的答案总是最好的帮助未来可能实施 cmets 的人。
标签: javascript reactjs react-hooks