javascript - React JS Redux 登录后加载数据

标签 javascript reactjs redux react-router react-redux

我正在使用react js和redux并使用jwt进行身份验证。

我有一个带有下拉菜单的导航栏。此下拉列表仅对经过身份验证的用户可见。下拉项是动态的,应在用户登录后从服务器加载。

但我不知道应该在哪里触发 api 调用来加载下拉项。 当我单击“登录”时,将触发身份验证操作。在此操作中,我进行身份验证并向 reducer 返回一个 bool 值。 然后状态“已验证”切换为“真”并且将显示他的下拉列表。 现在应该向用户显示下拉项。

但是我应该什么时候加载它们?

我的想法是将“加载下拉项”逻辑放入 reducer 中,以便我可以等待“经过身份验证”的操作。但逻辑应该在操作中实现,不是吗?

你知道我能做什么吗?

最佳答案

在 redux 中,一旦对用户进行了身份验证,您就可以使用 thunk 触发另一个 api 调用来获取用户信息并为其分派(dispatch)相应的操作。

您可以阅读更多有关需求和使用thunk的信息 here

export function  loginUser() {
  return async (dispatch, getState) => {
      let response = await login(credentials)
      //action creator to update boolean that user is logged in
      dispatch(loginSuccessful(response)) ;
      //action creator to trigger api to fetch drop down data
      dispatch(loadDropdownItems(response)); 
  }
}

关于javascript - React JS Redux 登录后加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49170219/

相关文章:

javascript - 如何将JavaScript代码封装为jQuery插件或其他解决方案

javascript - 替换 Knockout.js observableArray 中的所有元素

java - 当组合框值更改时,动态更新数据库中的文本框值

node.js - 如何解决 d3-array/src/number.js : unknown Statement of type "ForOfStatement" 语法错误

reactjs - 通过开 Jest 模拟测试 axios 获取未定义

reactjs - 在 redux 中使用 React Router 时如何修复黑屏

javascript - 未捕获( promise )TypeError : spawn is not a function

reactjs - 无法使用 React Native 将现有产品添加到 redux 中的 reducer 中的购物车中

javascript - jQuery .click() 在不存在的 html 元素上触发事件

javascript - api调用后更新组件的正确方法是什么