每当Redux存储使用令牌更新时,如何更新Axios实例标头

时间:2019-07-16 18:30:34

标签: redux react-redux axios

我正在制作一个使用Redux和Axios来控制身份验证标头的登录系统。我正在寻找一种方法,每当使用JWT更新商店时,Axios实例的标头也将更新,以便可用于任何后续API调用。

我已经研究过在reducer内进行此更新,但它似乎笨拙,重复,到目前为止还行不通。这是我的设置下面的一些代码。

const initialState = {
  isAuth : false,
  isLoading: false,
  data : {
    jwt: null
  }
}

export const reducer = (state = initialState, action) => {
  switch (action.type) {
    case LOGIN_REQUEST:
      token = null;
      return {
        …state,
        isLoading: true,
        data: null
      }
    case LOGIN_FAILURE:
      data = null;
      return {
        initialState
      }
    case LOGIN_SUCCESS:
      return {
        token = data.jwt;
        isAuth: false,
        isLoading: false
        data: ...action.payload,
      }
    case LOGOUT:
      token = null;
      return {
        initialState
      }
  }
}

const token = (jwt) => {
  return jwt;
}

const instance = Axios.create({
  baseURL: 'root',
  headers: {
    Authorization: `bearer ${token}`
});

到目前为止,当我更改令牌时,似乎还没有更新Axios实例,这很有意义。所以我的问题有两个:

当Redux存储更新时,我在哪里以及如何更新Axios实例?

0 个答案:

没有答案