Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 刷新页面时,axios请求令牌返回null_Reactjs_Redux_Axios_Use Effect - Fatal编程技术网

Reactjs 刷新页面时,axios请求令牌返回null

Reactjs 刷新页面时,axios请求令牌返回null,reactjs,redux,axios,use-effect,Reactjs,Redux,Axios,Use Effect,我使用的是axios,我在useeffect中发送请求,它可以工作,但当我刷新页面(F5)时,我从redux获取并添加到axios实例中的标记为null "axios": "^0.20.0", "react": "^16.14.0", "redux": "^4.0.5", "redux-logger": "^3.0.6", "r

我使用的是axios,我在useeffect中发送请求,它可以工作,但当我刷新页面(F5)时,我从redux获取并添加到axios实例中的标记为null

"axios": "^0.20.0",
"react": "^16.14.0",
"redux": "^4.0.5",
"redux-logger": "^3.0.6",
"redux-persist": "^6.0.0",
"redux-thunk": "^2.3.0"
这只是一个api调用,在refresh中,我的令牌是'Bearer null'

axios.interceptors.request.use(
  function (config) {
    const token = store.getState().auth.token;
    config.headers.Authorization = `Bearer ${token}`;
    // Do something before request is sent
    console.log("req config", config);
    return config;
  },
  function (error) {
    // Do something with request error
    return Promise.reject(error);
  }
);

刷新后,您需要等待令牌在redux存储中重新水化,但不会立即发生。如果这仍然不起作用,您需要验证令牌是否通过
redux persist
持久化

  useEffect(() => {
    getAssessments();
    getGroups();
    getAssessmentUsers();
  }, []);

标记
发生更改时,将触发此useEffect挂钩,例如:prevToken!==令牌,因此您还需要添加if语句以在令牌不为null时执行请求

您需要等待令牌在刷新后在redux存储中重新水化,但不会立即发生。如果这仍然不起作用,您需要验证令牌是否通过
redux persist
持久化

  useEffect(() => {
    getAssessments();
    getGroups();
    getAssessmentUsers();
  }, []);

标记
发生更改时,将触发此useEffect挂钩,例如:prevToken!==令牌,因此您还需要添加if语句,以便在令牌不为null时执行请求

只需确保在调用任何东西之前先拥有令牌即可。换句话说,您需要首先获取令牌,然后在其他api调用中检查令牌。我在redux存储中有它,但如何确保在发送请求之前拥有它?有没有办法等待令牌或?将
令牌作为依赖项传递到useffect钩子中,当您让令牌执行requestYes时,最简单的方法是在设置授权头之前检查令牌:)只需确保在调用任何东西之前先拥有令牌。换句话说,您需要首先获取令牌,然后在其他api调用中检查令牌。我在redux存储中有它,但如何确保在发送请求之前拥有它?有没有办法等待令牌或?在useEffect钩子中将
令牌作为依赖项传递,当您让令牌执行requestYes时,最简单的方法是在设置授权头之前检查令牌:)