【问题标题】:apollo-link-state update cache and return async resolverapollo-link-state 更新缓存并返回异步解析器
【发布时间】:2018-08-30 10:51:52
【问题描述】:

如何使用 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。并且承诺将再次更新状态。 据我了解,要更新状态,我需要先返回。怎么做才合适?

【问题讨论】:

    标签: asynchronous hyperlink state apollo resolver


    【解决方案1】:

    截至 22.03.2018

    这不能正确完成。要解决此问题,您必须导入 apollo 客户端并在其上调用 writeQuery。然后就可以了。

    GitHub 问题线索:https://github.com/apollographql/apollo-link-state/issues/200

    【讨论】:

      猜你喜欢
      • 2019-02-18
      • 2019-07-06
      • 2019-02-02
      • 2019-11-26
      • 2019-06-30
      • 2019-02-17
      • 2021-10-17
      • 2018-06-08
      • 2019-04-20
      相关资源
      最近更新 更多