账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    ant-design-pro 中怎么统一处理接口返回的会话失效
    24
    0

    model里有许多接口都是要登陆后才能调用的,code返回200是正常,
    返回20020时是会话失效了,这时我想跳重新转到登录页面,我是这样处理的

        *fetchShopSaleList({ payload }, { call, put }) {
          let res = yield call(qryShopSaleGroup, payload);
          if(res.code === 200) {
            yield put({
              type: 'save',
              payload: {
                shopCardList: res.data,
              },
            });
          } else if (res.code === 20020) {
            yield put(routerRedux.push('/user/cloudlogin'));
          }
        },
    
        *fetchShopSaleInfo({ payload }, { call, put }) {
          let res = yield call(qryShopSaleGroup, payload);
          if(res.code === 200) {
            yield put({
              type: 'save',
              payload: {
                shopSaleInfoList: res.data,
              },
            });
          } else if (res.code === 20020) {
            yield put(routerRedux.push('/user/cloudlogin'));
          }
        },

    在每个方法里判断下返回的code是否等于20020,如果等于就跳转到登录页面。
    我这样每个接口下都要写多这么一个判断,感觉不怎么好。

    请问有没什么办法能统一处理?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 淡淡伤〝微微凉 普通会员 1楼

      在Ant Design Pro中,可以使用生命周期钩子来统一处理接口返回的会话失效。生命周期钩子在<router-view>组件中使用beforeRouteLeavebeforeRouteUpdate两个生命周期钩子,分别在组件离开和组件更新之前执行。

      下面是一个简单的例子:

      ```javascript import {RouterView} from 'antd';

      class MyRouterView extends RouterView { @BeforeRouteLeave() leave() { // 处理会话失效的操作 console.log('会话失效'); }

      @BeforeRouteUpdate() update() { // 处理会话失效的操作 console.log('会话更新'); } } ```

      在上面的代码中,leave()update()两个生命周期钩子分别在组件离开和组件更新之前执行。在这些钩子中,可以编写你需要执行的任何操作,比如检查会话状态、更新数据等。

      注意:beforeRouteLeave()beforeRouteUpdate()这两个生命周期钩子只能在组件离开和组件更新之前执行,不能在组件创建或者组件销毁之前执行。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部