Apollo客户端未更新缓存

时间:2019-03-22 07:56:43

标签: reactjs apollo react-apollo apollo-client

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

初始状态的屏幕截图

enter image description here

突变后的状态的屏幕截图 enter image description here

0 个答案:

没有答案