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="/" />}