我正在尝试使用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进行更改,更改完成,并且测试转储显示返回的一些数据。似乎缓存也已经以某种方式进行了更新,但是如果缓存中的最后一项是当前项,则默认值会再次覆盖它。查看我的屏幕截图;
初始状态的屏幕截图