因此,我具有用于在身份验证期间管理本地状态的解析器,该更新器可更新当前用户。
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行是错误的,但是我没有找到任何可行的方法来在本地状态发生变化的情况下执行对服务器的调用而不进行一些奇怪的修改。正确的方法是什么?
更新: 在服务器突变后,至少有什么好方法可以更新本地状态?