我需要从 axios 拦截器内部调用 mobx 操作

问题描述 投票:0回答:1

当 API 返回 401 时,我想强制注销用户。以下代码是使用 Mobx 在 React Native Ignite 项目中编写的

import { useStores } from "../../models"
this.apisauce.axiosInstance.interceptors.response.use(response => {
  return response;
}, error => {
  if (error.response.status === 401) {
    useStores().authStore.reset()
  }
  return error;
})

对 authStore.reset() 的调用不会发生,没有错误,没有

console.tron.log
,什么也没有。有没有更好的做法来捕获401并触发mobx动作?无需在调用 API 的每个单独操作中处理它?

react-native axios interceptor mobx apisauce
1个回答
0
投票

就我而言:

// file auth.store.js
class AuthStore {

  ...
  reset(){ ... }
}

export default new AuthStore();
// file models.js
import authStore from 'path/to/file/auth.store.js';

export default { authStore };
// file api-file.js
import useStores from 'path/to/file/models.js';

this.apisauce.axiosInstance.interceptors.response.use(response => {
  return response;
}, error => {
  if (error.response.status === 401) {
    useStores.authStore.reset();
  }
  return error;
})

© www.soinside.com 2019 - 2024. All rights reserved.