【发布时间】:2019-10-09 00:41:15
【问题描述】:
当我单击子组件中的按钮时,我想强制我的父级重新呈现页面。 (我不使用redux,因为我在我的项目中没有时间学习它,所以我使用localStorage。不幸的是React看不到什么时候对本地Storage进行了更改,所以他没有重新渲染. 这就是为什么我想强制它重新渲染我的页面(以获得正确的内容)。)
我尝试使用带有函数 useState 的钩子来执行此操作,但它不起作用,我不知道为什么... (我的页面没有任何变化)
这是我的父页面:(只是代码很重要)
const[reload, setReload] = useState(false);
...
else if (user) { contents = [<Message_UserIdentified user={user} callBack={setReload}/>, contentform]; }
这是我的子组件:
const Message_UserIdentified = (props) => {
let user = props.user;
return (
<Alert color="primary" className="alert alert-dismissible alert-info">
<h4>Welcome {!user ? "" : user.firstname} {!user ? "" : user.lastname}</h4>
If you are not {!user ? "" : user.firstname} click <a onClick={() => {localStorage.removeItem('idUser'); props.callBack(true);}}>here.</a>
</Alert>
);
}
为什么我的父页面不想重新渲染? 提前致谢。
【问题讨论】:
-
避免使用 localStorage 来推动应用程序的更改。让你的 React 状态成为“真相的来源”,当你的状态改变时,将它们保存到 localStorage。您会发现
useEffect对保存到 localStorage 很有用。
标签: reactjs