React Router 受保护的路由

Posted

技术标签:

【中文标题】React Router 受保护的路由【英文标题】:React Router protected routes 【发布时间】:2020-10-26 20:00:48 【问题描述】:

我正在学习 React Router(准确地说是受保护的路由),在 React Router 文档中有一个我几乎可以理解的功能,但是有一行代码我看不到它是如何工作的。也许有人可以简短地描述那条线的作用。下面是来自https://reactrouter.com/web/example/auth-workflow的函数

function LoginPage() 
  let history = useHistory();
  let location = useLocation();

  let  from  = location.state ||  from:  pathname: "/"  ;
  let login = () => 
    fakeAuth.authenticate(() => 
        history.replace(from);
    );
  ; 

这条线有什么作用?

let  from  = location.state ||  from:  pathname: "/"  ;

我知道我们正在创建一个对象,但|| 是做什么的?是否将两个对象合二为一?没看懂。

【问题讨论】:

这与受保护的路由、React Router 甚至 React 无关。它是解构的,在location.state 为空或未定义的情况下提供了一个默认值来解构。右侧见***.com/q/2802055/3001761,左侧见***.com/q/26999820/3001761。 【参考方案1】:

|| 是逻辑或运算符

let  from  = location.state ||  from:  pathname: "/"  ;

这就是说,如果location.state 不为空或未定义,则将location.state.from 分配给变量from,否则分配 pathname: "/"

【讨论】:

以上是关于React Router 受保护的路由的主要内容,如果未能解决你的问题,请参考以下文章

React-Router-Dom v6 保护路由

页面未呈现;在 react-router-dom 中使用受保护的路由将道具传递给孩子时

受保护的路由 React Router 4 无法使用存储在 Redux 中的身份验证状态

如何在 react-router-dom 中实现像 vue-router 这样的路由器离开保护?

受保护路由中的重定向问题 - Vue js Router

使用React Router v6 进行身份验证完全指南