所以基本上在这里我希望我的导航条路线随着redux reducer的登录信息而改变,但路线保持静态。
useEffect(() => {
getUserInfo();
console.log(props.userInfo?. isLoggedIn)
if (props?.userInfo?.isLoggedIn == true) {
setUserState(['profile','dashboard','wallet']);
} else {
setUserState(['sign-in','sign-in','sign-in']);
}
},[props])
这里我把我的路由作为一个数组存储在useState
钩子中,但是这个useEffect
钩子直到我通过<Link></Link>
组件改变路由时才进行强制转换,我希望它在redux状态改变时立即进行强制转换。
2条答案
按热度按时间ehxuflar1#
在useEffect依赖性数组中添加userState。
3npbholx2#
不要在React状态中存储派生状态,这是React反模式。您可以直接从“依赖项”呈现UI。这假定组件已正确订阅Redux存储,并且
userInfo
是存储中的选定状态。更常见/实用的解决方案是创建读取
userInfo.isLoggedIn
属性的路由保护器组件,并有条件地呈现受保护的路由/组件或重定向到“安全路由”,您可以在我的答案here中阅读更多关于一般路由保护的内容。