使用@client的cache.readQuery引发:无法读取未定义的属性“种类”

时间:2018-08-20 08:24:44

标签: apollo apollo-client apollo-link-state

我已经创建了一个非常简单的“登录”页面,该页面应该将“电子邮件”和“密码”存储在本地缓存中,然后onSubmit在控制台上显示存储的值(这是通过resolvers.js中的更改完成的)

将电子邮件和密码值保存到缓存中似乎可以正常工作,但是每次尝试从缓存中读取值时,都会收到“网络错误:无法读取未定义的属性'种类'”。任何线索这是怎么回事?

我的最小示例: https://codesandbox.io/s/jv6mx6yoo9

1 个答案:

答案 0 :(得分:3)

问题是对readQuery的调用中缺少 query 参数名称(感谢阿波罗反应#slack上的@hwillson指出了这一点):

const LOGIN_DATA_QUERY = gql`
    query GetLoginData {
        email @client      
        password @client      
    }
`;
// (...)

const data = cache.readQuery({ LOGIN_DATA_QUERY });

应为:

const data = cache.readQuery({ query: LOGIN_DATA_QUERY });