首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在每条路由之前响应js和redux发送api调用。

在每条路由之前响应js和redux发送api调用。
EN

Stack Overflow用户
提问于 2019-02-04 13:22:56
回答 2查看 703关注 0票数 0

嗨,我是工作的反应和还原单页应用程序,我面临一个问题。

在我的应用程序,从管理面板,管理员可以使应用程序关闭和open.Mean,如果应用程序是从管理端关闭,那么我们将重定向我们的用户到一个错误的页面路由,如果应用程序是从管理面板打开,那么我们将允许用户访问和查看我们的应用程序的页面。

但我面临一个问题,我来自PHP和Laravel背景,在他们的我可以添加一个中间软件在我的每一个路线,我可以很容易地实现我的目标。

我已经对它做了一些研究,我发现我必须为此创建一个更高级的组件,并在应用程序启动时调用api,并且必须将api结果存储在本地存储中,但是如果我调用api并将api结果存储在本地存储空间中,那么在接下来的5分钟内,管理人员关闭餐厅,然后如何更新我的客户端本地存储空间,以便在应用程序从管理面板关闭时限制用户查看页面的权限。

因此,我需要在每个路由之前发送一个ajax请求,以验证用户是否可以查看页面。

在这个问题上,有人能帮我吗?我怎样才能实现我的上述目标?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-04 13:34:55

我认为在任何路由之前发送HTTP请求并不是解决问题的最佳解决方案。

最简单的方法是,在餐厅关闭时,响应授权的HTTP请求,只返回HTTP错误。因此,您可以在客户端设置一些HTTP请求拦截器,并拦截每个HTTP响应--如果其中包含错误响应--那么只需将用户重定向到错误页面。

检查拦截器

票数 3
EN

Stack Overflow用户

发布于 2019-02-19 12:50:07

如果您使用的是connected-react-router

每次路由更改时,它都会以'@@router/LOCATION_CHANGE'类型分发操作。

在您的示例中,您需要在路由更改之前执行一些api调用。

最好的地方是redux 中器

这是剩余流,

调度动作->存储获取动作并传递给中间件,->中间件做一些事情并传递给->减速器,得到动作并计算新状态

因此,您将拥有一个中间件,它执行api调用并检查所需的内容。然后,您决定将操作传递给减速机,从而改变路线,或者停止操作并重定向。

您可以为'@@router/LOCATION_CHANGE'添加redux中间件

就像这样

代码语言:javascript
运行
复制
import { push } from 'connected-react-router'
const loadingMiddleware = (store) => (next) => (action) => {
  if (action.type === '@@router/LOCATION_CHANGE') {
    // TODO: do api call here
    if (appIsClosed){
      // redirect to error route
      dispatch(push('/error'))
      // halt current action by returning void
      return;
    }
  }
  // pass onto next middleware
  return next(action);
};

export default loadingMiddleware;

然后在创建存储区时添加此中间件。

代码语言:javascript
运行
复制
import { createStore, combineReducers, applyMiddleware } from 'redux'

const todoApp = combineReducers(reducers)
const store = createStore(
  todoApp,
  // applyMiddleware() tells createStore() how to handle middleware
  applyMiddleware(loadingMiddleware)
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54517082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档