如何更新缓存并返回具有apollo-link-state的异步解析器。
示例:
import {
LOGIN_FORM_QC as query
} from '../../querys'
import axios from 'axios'
import axiosError from '../axiosError'
import {URL} from '../../config'
const newState = (cache, object) => {
const state = cache.readQuery({query})
const data = {
...state,
...{loginForm: {
...state.loginForm,
...object
}}
}
cache.writeQuery({query, data})
return null
}
export default (_, input, {cache}) => {
newState(cache, {loading: true, error: null}) //<-- this is not updating
const state = cache.readQuery({query})
const {uid, password} = state.loginForm
return axios.post(`${URL}/login`, {uid, password})
.then(res => {
console.log(res)
console.log(res.message)
})
.catch(err => newState(cache, {
error: axiosError(err),
loading: false
}))
}基本上,我想设置loading: true,然后执行promise。并且promise将再次更新状态。据我所知,要更新状态,我需要先做return。如何正确地做到这一点?
发布于 2018-03-22 12:39:20
截至2018年3月22日
这是不能正确完成的。要解决此问题,您必须导入阿波罗客户端并在其上调用writeQuery。然后它就起作用了。
GitHub问题趋势:https://github.com/apollographql/apollo-link-state/issues/200
https://stackoverflow.com/questions/49404295
复制相似问题