Есть ли способ сделать мутацию без рендеринга внутри функции? - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу что-то изменить в бэкэнде graphQL из клиента apollo, но мутация предполагает ничего не рендерить, это просто фоновая работа, я хочу запустить ее внутри функции, вызываемой в конструкторе, например:

_callUpdateTokenMutation(token: String) {
    return <Mutation mutation={REFRESH_FCM_TOKEN} variables={token}>
      {updateFcmToken => (
        return true
      )}
    </Mutation>;
  }

Мне было интересно, есть ли способ запустить это без тега мутации, что-то вроде:

client.mutation...

Дело в том, что клиент построен в App.js, и я хочуназывать это в компоненте, клиент глобален?

Заранее спасибо.

1 Ответ

0 голосов
/ 13 февраля 2019

Временно я закончил тем, что использовал fetch для запуска мутации на сервере, что-то вроде этого:

async _callUpdateTokenMutation(token: String) {
    const authUser = await getToken();

    if (authUser) {
      fetch(`${global.endpoint}/graphql`, {
        method: "POST",
        headers: {
          Accept: "application/json",
          "Content-Type": "application/json",
          Authorization: authUser
        },
        body: JSON.stringify({
          query: `mutation { updateFcmToken(token: ${token}) { id } }`
        })
      })
        // .then(response => response.json())
        .then(responseJson => {
          console.log(responseJson);
        })
        .catch(error => {
          /* TODO:
           * Leer bien el mensaje desde el servidor y mostrar la alerta
           * que manda el servidor
           */

          console.log("HOME_FCM_ERROR", error);
        });
    }
  }

, но было бы хорошо, если кто-то знает ответ с тегом Mutation или что-то с клиентом.

...