Мутация Аполлона-обстрела Реактора при загрузке страницы - PullRequest
1 голос
/ 30 мая 2019

Я пытаюсь внедрить систему проверки электронной почты в приложении Reaction-Apollo и столкнулся с проблемой. Проблема в том, что я хочу запустить мутацию GraphQL при загрузке страницы, когда пользователь заходит по ссылке с токеном проверки. В настоящее время мутация вызывается нажатием кнопки, но я хочу, чтобы это произошло при загрузке страницы.

Я пытался вернуть мутацию из render, но он отправил приложение в бесконечный цикл.

return (
            <Mutation
              mutation={VERIFY_EMAIL_MUTATION}
              variables={{ id }}
              onCompleted={() => this.setState({ userVerified: true })}
            >
              {(verifyEmail, { loading, error }) => {
                 verifyEmail();
            }
            </Mutation>

Как реализовать мутацию при загрузке страницы?

1 Ответ

1 голос
/ 30 мая 2019

Используйте compose и передайте его как функцию вашему компоненту. Следующий метод позволяет вам передавать несколько мутаций / запросов, вы можете использовать их где угодно и без триггеров.

import React from "react";
import { compose, graphql } from "react-apollo";

import {
  VERIFY_EMAIL_MUTATION
} from "../GraphqlQueries/ServerQueries";

class YourComponent extends React.Component {
  componentWillMount() {
    this.props.verifyEmail({variables: {email: "your_email", variable2: "variable2" }});
  }

  render() {
    return (
      <React.Fragment>
        Your Render
      </React.Fragment>
    );
  }
}

export default compose(
  graphql(VERIFY_EMAIL_MUTATION, {
    name: "verifyEmail"
  })
)(YourComponent);
...