Каков порядок выполнения локальных распознавателей в React Apollo? - PullRequest
0 голосов
/ 02 ноября 2019

Скажем, у меня есть следующий запрос:

query Foo {
  foo {
    bar
    baz
    qux @client
  }
}

И эти преобразователи:

Foo: {
  qux: () => {
    console.log("qux");
    return "qux";
  },
  bar: obj => {
    console.log("bar");
    return obj.bar;
  },
  baz: obj => {
    console.log("baz");
    return obj.baz;
  }
}

Зависит ли порядок выполнения распознавателей от порядка в запросе - или другогонаоборот?

1 Ответ

0 голосов
/ 03 ноября 2019

Я разобрался: нет "приказа решателя". Порядок задается только запросом.

Если вы запускаете фиктивный запрос, это то, что записывается в журнал:

bar
baz
qux

Это несмотря на то, что qux является первым объявленным преобразователем,Вы можете зарегистрировать его только в том случае, если вы переместитесь на qux @client вверх в запросе, например:

query Foo {
  foo {
    qux @client
    bar
    baz
  }
}

Тогда журналы будут:

qux
bar
baz

Конечно, этоповедение может варьироваться в зависимости от того, какие версии вы используете. Вот мои:

  • @ apolo / реагирующие крючки @ 3.1.3
  • apollo-cache-inmemory@1.6.3
  • apollo-client@2.6. 4
  • apollo-link-http@1.5.16
  • graphql@14.5.8
  • graphql-tag@2.10.1
...