【问题标题】:React Redux authenticationReact Redux 身份验证
【发布时间】:2017-06-16 11:58:38
【问题描述】:

我有以下情况,我有一个 REST API 和一个 React+Redux 应用程序。

当用户登录时,我将令牌保存到 localStorage,基于此,如果用户返回该页面,我使用令牌调用服务器 /api/whoami { token },我将验证令牌并返回我将用来更新我的 Redux 存储的用户详细信息。

我的问题是,如果我刷新并且我想在 componentDidMount 中做某事,即使用户已登录 Redux 商店,由于对 /api/whoami 的请求尚未完成,因此尚未更新。

我如何才能等到对/api/whoami 的请求完成并设置用户然后呈现我的应用程序?

对于此类问题还有其他解决方案吗?

谢谢!

【问题讨论】:

    标签: javascript reactjs authentication redux


    【解决方案1】:

    您可以使用在您的情况下称为 Aync 操作,并在获取详细信息时显示加载组件。

    在这里您将不得不使用 thunk 中间件。它位于一个名为redux-thunk 的单独包中。当动作创建者返回一个函数时,该函数将由 Redux Thunk 中间件执行。详细阅读here

    功能:在您开始获取操作之前,调度和操作将isLoading 设置为true,在您收到响应后,您调度另一个将设置isLoading: false 的操作和在您的显示器上设置一个条件,如果 isLoading 为 true,则返回加载组件,否则返回配置文件组件

    【讨论】:

    • 我已经在这样做了,但是如何等待请求完成来呈现我的应用程序?
    • 您的最后一条评论应该添加到答案中
    【解决方案2】:

    我想你知道react-redux,并且你熟悉一些概念,比如actionstorereducer

    如何才能等到对/api/whoami 的请求完成?

    使用像redux-thunk[redux-saga][1]这样的中间件...我建议您使用redux-saga,因为它是一个旨在产生副作用的库(即数据获取等异步操作React/Redux 应用程序中的访问浏览器缓存等不纯的东西)更容易更好。

    如何设置用户然后渲染我的应用程序?

    使用中间件,您可以在请求运行时呈现加载视图,并在请求完成时呈现您想要的内容。

    阅读redux-saga官方文档了解更多信息和使用示例。

    【讨论】:

      猜你喜欢
      • 2021-08-11
      • 1970-01-01
      • 2019-08-24
      • 2020-06-11
      • 1970-01-01
      • 2018-01-02
      • 2020-09-03
      • 2020-07-05
      • 1970-01-01
      相关资源
      最近更新 更多