Reactjs 误解使用useState react hook-don';我不能正常工作
我正在尝试根据用户角色权限实现私有路由。这是我的密码:Reactjs 误解使用useState react hook-don';我不能正常工作,reactjs,react-hooks,use-state,react-component,react-lifecycle,Reactjs,React Hooks,Use State,React Component,React Lifecycle,我正在尝试根据用户角色权限实现私有路由。这是我的密码: App.js或routes.js: <PrivateRoutes path="/equipments" role="hasEquipments" component={(props) => <EquipmentsList {...props} />} /> <PrivateRoutes path="/users/options" role=&qu
App.js
或routes.js
:
<PrivateRoutes path="/equipments" role="hasEquipments" component={(props) => <EquipmentsList {...props} />} />
<PrivateRoutes path="/users/options" role="hasUsers" component={(props) => <UsersOptions {...props} />} />
根据响应。数据
例如,我可以访问/设备
路径。
不管怎样,我总是重定向到“/”
,权限挂钩总是false
。在最后的返回
,如果我只打印{console.log(permissions)}
,注释{permissions?:}
行,那么permissions hook就是true
。我想我误解了这里的一些生命周期概念
如何实现这一点有什么提示吗?甚至在调用api之前就进行了重定向<代码>使用效果在组件渲染后调用。一个解决方案是添加一个中间值,比如
null
,或者让它不被定义,这只是一种知道是否已经调用了api的方法
const [permissions, setPermissions] = useState(null);
// ...
if (permissions === null) return null
// ...
{permissions ? <Route {...rest} /> : <Redirect to="/" />}
const[permissions,setPermissions]=useState(null);
// ...
如果(权限===null)返回null
// ...
{权限?:}
使用中间值作为null,并在每个if中添加一个else子句以将权限更新为false,这很有效,非常感谢@jperl!
{
hasEquipments: {
actions: {post: true, put: true, delete:: false}
state: true,
},
hasUsers: {
actions: {post: false, put: false, delete:: false}
state: false,
}
}
const [permissions, setPermissions] = useState(null);
// ...
if (permissions === null) return null
// ...
{permissions ? <Route {...rest} /> : <Redirect to="/" />}