反应 SPA。用于处理登录状态的全局状态存储 API?

Posted

技术标签:

【中文标题】反应 SPA。用于处理登录状态的全局状态存储 API?【英文标题】:React SPA. API for global state store for handling login state? 【发布时间】:2019-02-27 12:40:15 【问题描述】:

所以我在我的网站的根目录中有这个 React 组件,它是登录页面,我们称它为 A。如果登录成功,它将登录状态设置为 true,然后切换到另一个页面,然后沿着这些页面的树向下(假设我有 A,那么 B 是 A 的孩子,C 是 B 的孩子)。假设在 CI 对后端进行休息调用并返回 401(无论出于何种原因,他们不被允许或他们的令牌已过期),然后我知道该人不应该登录,因此它应该自动将登录状态设置为A 为假。 我想知道是否有办法通过全局状态管理器来做到这一点?我想这与 Redux 类似,但 Redux 也要求您将存储传递到组件树中,我觉得这有点麻烦且难以组织好。如果我可以拥有一个可以导入的全局状态存储,那就太好了。

【问题讨论】:

如果 A 中的状态决定了如何渲染 B 和 C,那么将处理程序向下传递是否有意义?有问题吗? 只是看起来有点麻烦 【参考方案1】:

在这种情况下,您应该使用商店来维护整个应用的身份验证状态。您可以简单地将其注入任何组件并更新值,并让任何其他需要检查的组件引用它。

如果您还没有开始学习存储,那么您可以将状态存储在父组件中:

this.state = 
    authorised: false,

然后添加一个函数来更新这个:

setAuthorisation(value)
    this.setState(authorised: value)

现在您所要做的就是将这两个传递给您的子组件,它们可以随时更新和引用

<Child authCallback=this.setAuthorisation isAuthorised=this.state.authorised />

你真的应该自己研究这个,因为它是 react 的基础之一 :)

【讨论】:

以上是关于反应 SPA。用于处理登录状态的全局状态存储 API?的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js实现一个SPA登录页面的过程

功能反应式 F# - 在游戏中存储状态

处理django rest framework + vue SPA auth

如何在浏览器中为 React SPA 保留 Auth0 登录状态

前后端分离的项目如何实现登录状态的保持。

使用 get API 调用反应全局状态/道具(没有 Redux)