- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 onEnter
钩子(Hook)的所有 React-router 示例中,该钩子(Hook)都是同步的。在问题中,建议保持这种方式。在钩子(Hook)内登录某人的惯用方法是什么?
用户故事:
example.com/mustBeLoggedIn
我应该只使用 HOC 而不是 onEnter
吗?
我目前可以使用它,但我知道不建议这样做,而且看起来很脆弱,例如使用不可变存储会导致与此问题相同的问题:https://github.com/rackt/react-router/issues/2365
最佳答案
有很多方法可以解决这个挑战,但我同意 onEnter
中的调用应该同步的建议。以下是解决这一挑战的两种方法。
选项 1:不在页面加载时验证 token
可以说浏览器根本不应该验证现有 token 。也就是说,浏览器应该假设 token 有效并尝试加载定义的路由。
在服务器发出 API 调用失败响应时(真正发生实际身份验证和授权的情况),您的应用程序可以以它选择的任何方式处理重新身份验证的需要:重定向到登录页面、显示登录对话框、等等
这种方法的优点是它可以在使用此逻辑的所有路由中工作,而无需单独指定需要它的路由。
选项 2:使用 HOC(推荐)
正如您所怀疑的,HOC 可能是最好的选择。您的路由器将尝试呈现如下内容:
<EnsureAuthorized checks={myCheckFunction} Component={MustBeLoggedIn} />
除了所需的身份验证检查(如用户角色)之外,这种灵活的 HOC 还可以选择运行自定义授权检查,并仅在身份验证和检查成功时才呈现提供的组件,然后以一致的方式处理失败(例如呈现登录组件或将用户重定向到登录页面或显示 403 类型的消息等)。
关于reactjs - onEnter 钩子(Hook)中的react-router自动登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620435/
我有一个问题,我想在路由渲染中的组件之前分派(dispatch)我的 Action (isLoading),但是当我在 onEnter 事件中调用分派(dispatch)时,React 给出错误: “
我正在寻求有关我的 React Router onEnter 属性的帮助。似乎 onEnter 属性会在我的应用程序中的每个组件上触发,尽管我没有指定这一点。很确定这与我的路由器设置有关。 我的代码:
我有一个带有两个输入字段、一个文本和一个发送按钮的表单。我想通过 jQuery .ajax() 提交而不重新加载文档。只要单击按钮,它就会起作用,但当您按 return/enter 时,它就不起作用,
我正在使用 React Router onEnter 属性来处理身份验证,如下所示,也如 "auth-flow" example 中所示. function requireAuth(nextSt
我想使用 onEnter 回调进行提取,但我不知道如何读取 Route 组件中的 URL 参数。 我有这条路线 我想用bookId从路径作为 onBookLoad() 的函数参数.是否可以? 最佳答
当将redux-observable与react-router一起使用时,按照文档here中的说明异步添加新的史诗是否有意义?在路由更改期间,在react-router的onEnter钩子(Hook)
我正在构建一个基本的 react 登录应用程序,用于教育目的,并验证我正在使用 React-router 的 onEnter prop 功能的路线 import axios from 'axios';
我正在尝试将路由身份验证添加到我在 React 路由器上的 reactjs 应用程序,但是每当我将我创建的身份验证功能添加到特定路由上的 on enter 属性时,我都会收到以下错误。 未捕获的 Ra
我有一个使用redux-router的工作客户端应用程序。 我从我的 api 分派(dispatch) user 页面的初始状态。 我的路线文件: export default function ({
我正在切换到新版本的 ui-router (1.0.0-alpha.5) 并试图找出在哪里使用 onEnter 钩子(Hook)以及在哪里 onStart: $transitions.onStart(
我正在构建一个应用程序,我想在用户进入和离开路线的那一刻切换服务中的属性。为此,我需要了解 onEnter 中的州名。和 onExit钩子(Hook)。这对于 onExit 来说相对容易。钩子(Hoo
我正在玩弄 frida,特别是 iOS 上的 frida-trace。 当一个方法被 Hook 并且我可以在 onEnter 中记录参数时,有没有办法让这个函数调用提前结束而不调用原始方法? 我已经尝
感谢来自 SO 社区的一些大力帮助,我有一个使用 ui-router 使用多个状态/ View 的工作 Angular SPA。图书馆。但是,我的行为似乎与 angular-ui-router 不一致
我想使用react-router的onEnter钩子(Hook)在路由加载时检查我的redux存储中的变量。 根据文档,onEnter: ...receives the next router sta
我目前正在尝试构建一个简单的react-redux应用程序,该应用程序在后端包含学生和校园数据。 OnEnter曾经在这里工作,但它在新的react-router中不存在。 此应用程序尝试在开始时加载
好的,所以我有一个 url "/securepage"的状态,每当用户尝试访问它时我都需要检查它。所以我读到有一个我可以使用的 onEnter 函数。但我似乎无法从那里获得范围或服务。我究竟做错了什么
我正在开发一款游戏。并在我的游戏中使用音频。对于音频,我导入了 SimpleAudioEngine 框架。我在 onEnter 方法中设置音频,其他声明和编码在 init 方法中。在 onEnter
我有一个 Angular 应用程序,其 ui.router 模块有一个 onEnter 方法。我想在单击状态菜单项并且状态更改时调用函数。但现在我的应用程序无法正常工作。例如。我访问 app.com/
在 onEnter 钩子(Hook)的所有 React-router 示例中,该钩子(Hook)都是同步的。在问题中,建议保持这种方式。在钩子(Hook)内登录某人的惯用方法是什么? 用户故事: 客户
我正在开发一款游戏。并在我的游戏中使用音频。对于音频,我导入了 SimpleAudioEngine 框架。我在 onEnter 方法中设置音频,其他声明和编码在 init 方法中。在 onEnter
我是一名优秀的程序员,十分优秀!