所以我有解析器用于在身份验证期间管理我的本地状态,以更新当前用户 .
updateCurrentUser: (_, { username, password }, { cache }) => {
const LOGIN = gql`
query Authenticate($username: String!, $password: String!){
authenticate(username: $username, password: $password) {
username
token
}
}`
const login = server.readQuery({ query: LOGIN, variables: {username: username, password: password} })
if (login === null) {
cache.writeQuery({
query: gql`
query GetLoginError {
loginError @client {
error
}
}`,
data: {
loginError: {
error: 'wrong loing data'
}
}
})
}
else {
const newData = {
currentUser: {
...login
}}
cache.writeQuery({ query: GET_CURRENT_USER, data: newData })
}
return null;
}
显然第9行是错误的但我没有找到任何可行的方法在本地状态突变期间执行对服务器的调用而不执行一些奇怪的黑客攻击 . 什么是正确的方法呢?
更新:至少有任何好的方法可以在突变到服务器后立即更新本地状态吗?