Клиент Apollo не обновляет кеш - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь использовать компонент мутации Apollo, но каким-то образом мой кеш (или пользовательский интерфейс?) Не обновляется, как я ожидаю. Код выполняется просто отлично, но новые пользовательские данные, полученные с сервера (такие как 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
      }
   }
`;

Компонентный

<code>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)}
                     
)}
                  <h4>SEND_USER</h4>
                  {JSON.stringify(data, null, 2)}
               
)} ); };

Оба приведенных выше запроса работают отлично, я могу получить значения по умолчанию, которые я установил для пользователя с помощью GET_USER, и я могу сделать мутацию с помощью SEND_USER, мутация завершена, и некоторые возвращенные данные отображаются в моем тестовом дампе. Кажется также, что кэш был каким-то образом обновлен, но был снова переопределен значениями по умолчанию, если последний элемент в кэше является текущим. Смотрите мои скриншоты;

Снимок экрана исходного состояния

enter image description here

Снимок экрана состояния после мутации enter image description here

...