Реле QueryRenderer не возвращает ожидаемые реквизиты из запроса - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь использовать QueryRenderer с сопровождающим фрагментом, который я намерен использовать для нумерации страниц, в сочетании с createPaginationContainer компонентом более высокого порядка для ретранслятора.

Я использую фрагмент в запросе, который я передаю QueryRenderer. * Например 1004 *

  <QueryRenderer
    environment={environment}
    query={
      graphql`
        query MyComponentQuery($count: Int!, $cursor: String) {
          ...MyComponent_students @arguments(count: $count, cursor: $cursor)
        }
      `
    }
    variables={{count: 10}}
    render={(p) => {
      console.log('render of QueryRenderer');
      console.log(p);
      return (<MyComponent {...p.props} error={p.error} />);
    }}/>

Этот запрос успешно выполнен - ​​на вкладке сети видно, что ожидаемый JSON возвращается с сервера в результате выполнения этого запроса GraphQL.

Однако я совершенно не могу увидеть результат запроса в контексте query реквизит QueryRenderer (обратите внимание на запись во фрагменте выше). Вот вывод console.log(p).

{…}​
  error: null​
  props: {…}​​
    __fragments: {…}​​​
      MyComponent_students: {…}​​​​
        count: 10​​​​
        cursor: null​​​​
        <prototype>: Object { … }​​​
      <prototype>: Object { … }
  ​​  __id: "client:root"
​​    <prototype>: Object { … }​
  retry: function retry()​
  <prototype>: Object { … }

Это затем не позволяет мне передать результат запроса в paginationContainer (в данном случае это MyComponent).

Почему это происходит и как это можно исправить?

Для справки, фрагмент MyComponent_students определяется как:

fragment MyComponent_students on Query @argumentDefinitions( count: {type: "Int", defaultValue: 10} cursor: {type: "String"} ) { students( first: $count after: $cursor ) @connection(key: "MyComponent_students") { edges { node { id createdAt } } } }

1 Ответ

0 голосов
/ 04 сентября 2018

Вам необходимо явно назвать реквизиты в QueryRenderer, когда вы используете createPaginationContainer

return (<MyComponent xxxx={p.props} error={p.error} />);

вместо

return (<MyComponent {...p.props} error={p.error} />);

см. Пример https://github.com/relayjs/relay-examples/blob/8ef8d2615d5294bf94dfeae4e6b0db574150f7f1/todo/js/app.js#L67

...