Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.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
Javascript 如何检索localstorage中的令牌以在react js的标头中设置?_Javascript_Reactjs_Axios - Fatal编程技术网

Javascript 如何检索localstorage中的令牌以在react js的标头中设置?

Javascript 如何检索localstorage中的令牌以在react js的标头中设置?,javascript,reactjs,axios,Javascript,Reactjs,Axios,我有一个问题,我无法直接从localstorage检索数据,因此首先我从API获取响应数据,然后我将其设置为local storage,我想检索本地存储中的数据,然后在axios中将其设置为标头,如何检索并将其组织到标头中 这是我从app.js生成令牌的函数 const getAppToken = () => { Api.post('/auth/api/v1/generateToken', {auth:{username: 'john doe', password: '123123

我有一个问题,我无法直接从localstorage检索数据,因此首先我从API获取响应数据,然后我将其设置为local storage,我想检索本地存储中的数据,然后在axios中将其设置为标头,如何检索并将其组织到标头中

这是我从app.js生成令牌的函数

const getAppToken = () => {
    Api.post('/auth/api/v1/generateToken', {auth:{username: 'john doe', password: '123123'}})
      .then(res => (res.data.data.token !== null && res.data.data.token !== "" && storageData('token', res.data.data.token)))
      .catch(err => console.log(err))
  }
这是axios拦截器

Api.interceptors.request.use(
  async config => {
    const appToken = await getData('token')
    if (appToken) {
      config.headers.Authorization = 'Bearer ' + appToken
    } else {
      console.log('error, token gk masuk')
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)
这是get API函数的一个示例,该函数需要home.js的头和另一个文件

Api.get(`/master/api/v1/aboutUs/fetch`, {
  headers: { Authorization: `Bearer ${getData('token')}` }
})
这是函数get和set localstorage

export const storageData = (key, value) => {
    try {
        localStorage.setItem(key, value)
    } catch(e) {
        console.log(e)
    }
}

export const getData = (key) => {
    try {
        const value = localStorage.getItem(key)
        return (value !== null && value) 
    } catch(e) {
        console.log(e)
    }
}

这里不是返回数据,而是返回布尔值

  return (value !== null && value)
就这么做吧

 return value

如果该值不存在,它只会返回null

为什么
等待getData
?它不是异步的,如果您想使用
getAppToken
的结果(您的代码中似乎没有该结果),您需要实际从该函数返回一些内容。。。目前您没有,因为您返回了
storageData
返回的内容,这是什么?首先使用wait而不是async,其次您是否检查了localstorage中的可用值?@JaromandaX所以我先将getToken的结果保存在state中还是什么?我是新来的Js@JaromandaX来自getToken的响应已进入localstorage,但如何检索以在标题中设置?我已按照您的意思对其进行了条件化处理,但这不起作用,如何解决此问题?来自getToken的响应已进入localstorage,但如何检索以在标题中设置?