Я пытаюсь использовать компонент мутации 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, мутация завершена, и некоторые возвращенные данные отображаются в моем тестовом дампе. Кажется также, что кэш был каким-то образом обновлен, но был снова переопределен значениями по умолчанию, если последний элемент в кэше является текущим. Смотрите мои скриншоты;
Снимок экрана исходного состояния
Снимок экрана состояния после мутации