React-路由架构-Route中的render 不显示页面的问题

使用 react-router-dom 的版本是 5.3.0
整体路由架构这里不详细说明,仅针对路由配置中关于 Route 的 render 的使用进行分析。

页面实现效果

当本地存储中没有 token 授权,重定向到 login 页面,否则进入 Sandbox 页面

错误使用

export default function IndexRouter() {
  return (
    <HashRouter>
      <Switch>
        <Route path="/login" component={Login} />
        {/* render 方法跳转组件,可以实现当未授权重定向到指定组件 */}
        {/* 通常,登录成功后,会将后端返回的 token 字段加到本地存储中,所以可以判断本地中有没有这个字段来判断是否授权(登陆过) */}
        <Route
          path="/"
          render={() => {
            localStorage.getItem("token") ? (
              <Sandbox />
            ) : (
              <Redirect to="/login" />
            );
          }}
        />
      </Switch>
    </HashRouter>
  );
}

运行效果

无法重定向到 /login,/ 路径也无法显示 sa

原因分析

render 是一个方法,以上代码并没有返回值,

解决

方法一: 去掉 {}
<Route
   path="/"
   render={() =>
     localStorage.getItem("token") ? (
       <Sandbox />
     ) : (
       <Redirect to="/login" />
     )
   }
 />
方法二: 将组件 return 出去
<Route
   path="/"
    render={() => {
      return localStorage.getItem("token") ? (
        <Sandbox />
      ) : (
        <Redirect to="/login" />
      );
    }}
  />
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁什么鸭,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值