reactjs - Apollo 客户端不更新缓存
问题描述
我正在尝试使用 Apollo 突变组件,但不知何故,我的缓存(或 ui?)没有像我预期的那样更新。代码执行得很好,但是从服务器接收到的新用户数据(例如 uuid/id 等)从未填充过当前数据。
我知道的'updateCache'不应该是突变所必需的,因为查询和突变的返回字段都是相等的(?)
这就是我的代码的样子;
架构
/**
*
* Reading user data from the cache
*/
export const GET_USER = gql`
query getUser {
user @client {
uuid
email
firstName
lastName
__typename
}
}
`;
/**
*
* Sending user data to the GraphQL server
*/
export const SEND_USER = gql`
mutation sendUser($input: UserInput!) {
sendUser(input: $input) {
uuid
email
firstName
lastName
__typename
}
}
`;
零件
return (
<Mutation mutation={SEND_USER}>
{(sendUser, { loading, data, error }) => (
<Form handleOnSubmit={e => handleOnSubmit(e, sendUser)}>
<UserFieldset user={userState} handleOnChange={handleOnChange} />
<Button type="submit" loading={loading} disabled={loading}>
Create user
</Button>
<Query query={GET_USER}>
{({ data }) => (
<pre>
<h4>GET_USER</h4>
{JSON.stringify(data, null, 3)}
</pre>
)}
</Query>
<pre>
<h4>SEND_USER</h4>
{JSON.stringify(data, null, 2)}
</pre>
</Form>
)}
</Mutation>
);
};
上面的两个查询都可以正常工作,我可以使用 GET_USER 接收我为用户设置的默认值,我可以通过 SEND_USER 进行突变,突变完成,返回的一些数据由我的测试转储显示。如果缓存中的最后一项是当前项,则似乎缓存已经以某种方式进行了更新,但又被默认值覆盖了。看我的截图;
初始状态截图
解决方案
推荐阅读
- oracle - 如何使用 PL/SQL (Oracle 10g) 从另一个 PL/SQL 文件的包函数中的 PL/SQL 文件调用函数
- azure-devops - 在 Azure Devops 中使用 CMD 运行测试
- macros - 如何在 antlr4 语法中实现 typedef hack
- android-emulator - Virtual Box:运行 Android 模拟器时出现严重错误
- angular - 如何在 MatTable Angular 中进行自定义排序
- powerbi - PowerBI 中每个 ID 连续几个月的 DAX/M 计数
- apache - httpclient:通过http代理在connectionmanager上配置sslcontext
- javascript - React 页面记忆
- google-apps-script - 从清单部署的容器绑定应用脚本可以允许其他用户从容器电子表格中读取数据而无需共享文件
- android - 在哪里可以找到 Android 软件包的源文件?