Изменение состояния объекта - PullRequest
0 голосов
/ 17 сентября 2018
<Mutation mutation={addUserQuery} variables={{
  username: "AuraDivitiae",
  firstname: "Michael",
  lastname: "Lee"
}}>
  {
    (addUser, data) => {
      count = count + 1
      console.log("render no:" + count);
      console.log(data)

      return (
        <div className="form">
          <form onSubmit={(e) => {
            e.preventDefault();
            new Promise((resolve, reject) => { addUser(); resolve("Mutation function called!") }).
              then((prevData) => { console.log(prevData); console.log(data); })
          }}>
            <button type="submit">Add User</button>
          </form>
        </div>
      );
    }

  }
</Mutation>

Журналы консоли

    render no:1
    main.js:88 
{called: false, loading: false, data: undefined, error: undefined, client: DefaultClient}

---------------- Нажатие кнопки ------------------------------------------

    render no:2
    main.js:88 
{called: true, loading: true, data: undefined, error: undefined, client: DefaultClient}

    main.js:98 
Mutation function called!

    main.js:98 
{called: false, loading: false, data: undefined, error: undefined, client: DefaultClient}

    render no:3
    main.js:88 
{called: true, loading: false, data: {…}, error: undefined, client: DefaultClient}

Из этих журналов видно, чтоПервоначально, когда компонент Mutate монтируется, мы получаем рендер no: 1. При нажатии кнопки в строке вызывается функция mute addUser () в обещании, которое разрешается с помощью "Mutation function selected".Однако в журналах он показывает объект результата изменения в main.js: 88, это означает, что он повторно отображает компонент.

Мой вопрос заключается в том, обновляет ли вызов функции mutate состояние, которое повторно отображает компонент?И был ли контроль передан функции mutate, чтобы компонент повторно визуализировался до того, как обещание могло быть разрешено и впоследствии использовано?Но после повторного рендеринга разве не должно вызываться шоу данных?

...