Graphql Apollo客户端在页面刷新之前不向后端发送令牌
我一直在开发一个应用程序,直到我开始清除缓存时才意识到这个问题,但我的应用程序只有在刷新时才能正常工作。当我清除所有缓存、刷新然后运行我的应用程序时,我意识到我的查询返回了我的自定义错误“GraphQL错误:未作为用户进行身份验证” 我相信我建立阿波罗客户的方式有问题。似乎上下文一实例化就被设置了,即使令牌存在,也不会更改上下文。它还将解释为什么在登录然后刷新之后,查询会使用令牌,直到清除本地存储/缓存。所以我的问题是我所拥有的有什么问题Graphql Apollo客户端在页面刷新之前不向后端发送令牌,graphql,apollo,react-apollo,apollo-client,Graphql,Apollo,React Apollo,Apollo Client,我一直在开发一个应用程序,直到我开始清除缓存时才意识到这个问题,但我的应用程序只有在刷新时才能正常工作。当我清除所有缓存、刷新然后运行我的应用程序时,我意识到我的查询返回了我的自定义错误“GraphQL错误:未作为用户进行身份验证” 我相信我建立阿波罗客户的方式有问题。似乎上下文一实例化就被设置了,即使令牌存在,也不会更改上下文。它还将解释为什么在登录然后刷新之后,查询会使用令牌,直到清除本地存储/缓存。所以我的问题是我所拥有的有什么问题 import { persistCache } from
import { persistCache } from "apollo-cache-persist";
import { ISLOGGEDIN_QUERY } from "./components/gql/Queries"
const cache = new InMemoryCache();
const token = localStorage.getItem('token')
persistCache({
cache,
storage: localStorage
})
const client = new ApolloClient({
uri: "http://localhost:4000/graphql",
cache,
resolvers: {
Mutation: {
changeValue: (_, args, { cache }) => {
const { isAuth } = token ? cache.readQuery({ query: ISLOGGEDIN_QUERY }) : false;
cache.writeData({
data: { isAuth: !isAuth }
})
return null;
}
}
},
request: (operation) => {
operation.setContext({
headers: {
authorization: token ? token : ''
}
})
},
});
//set default values
client.cache.writeData({ data: { isAuth: token ? true : false } })
export default client;```