我有以下情况,我有一个REST API和一个React + Redux应用程序。
当用户登录时我将令牌保存到localStorage,基于此,如果用户回到页面,我使用令牌调用服务器/api/whoami { token }
,我在那里验证令牌并返回用于更新我的Redux商店的用户详细信息。
我的问题是,如果我刷新并且我想在componentDidMount
中执行某些操作,即使用户已登录,Redux商店还没有更新,因为对/api/whoami
的请求是没完。
我怎样才能等到/api/whoami
的请求完成并设置用户然后呈现我的应用程序?
针对此类问题还有其他解决方案吗?
谢谢!
答案 0 :(得分:1)
您可以在案例中使用所谓的 Aync操作,并在获取详细信息时显示加载组件。
在这里,您必须使用 thunk中间件。它有一个名为redux-thunk
的独立包。当动作创建者返回一个函数时,该函数将由Redux Thunk中间件执行。详细阅读here
正常运行:在您开始获取操作,调度和操作之前,将isLoading
设置为true
,并在收到您的响应后,您将发送另一个将设置的操作isLoading: false
并在您的显示屏上显示一个条件,如果isLoading为true,则返回加载组件,否则返回配置文件组件
答案 1 :(得分:0)
我想您知道react-redux
并且您对action
,store
,reducer
等一些概念很熟悉。
我怎么能等到
/api/whoami
的请求完成?
使用redux-thunk
,[redux-saga][1]
等中间件 ...我建议您使用redux-saga
,因为它是一个旨在产生副作用的库(即React / Redux应用程序中的数据提取和不正确的事物(如访问浏览器缓存)等异常事件更容易,更好。
如何设置用户然后呈现我的应用程序?
使用中间件,您可以在请求运行时呈现加载视图,并在请求完成后呈现您想要的内容。
阅读redux-saga
官方文档了解更多信息和使用示例。