Перезапуск контейнеров обновляется, но не обновляет представление - PullRequest
0 голосов
/ 28 февраля 2019

Мое приложение выглядит примерно так, как показано во фрагментах ниже.

(я упустил много деталей реализации в надежде, что приведенного ниже кода достаточно, чтобы ответить на мой вопрос).

SampleApp.js

const SampleAppQuery = graphql`
  list SampleAppQuery {
    ...ItemComponent_item
  }
`

function SampleApp() {
  return (
    <QueryRenderer
      environment={environment}
      query={SampleAppQuery}
      render={(error, props) => {
        if (props) {
          return <AppRefetchContainer list={props} />
        }
      }}
    />
  )
}

AppRefetchContainer.js

class AppRefetchContainer extends Component {
  render() {
    <div>
      <HeaderComponent refetchList={this._refetchList} />
      {list.map(item => <ItemComponent item={item} />)}
    </div>
  }

  _refetchList(params) {
    this.props.relay.refetch(params)
  }
}

export default createRefetchContainer(
  AppRefetchContainer,
  graphql`
    fragment AppRefetchContainer_list on Item {
      ...ItemComponent_item
    }
  `,
  graphql`
    query AppRefetchContainerQuery($sortBy: String!)
    list SampleAppQuery(sortBy: $sortBy) {
      ...ItemComponent_item
    }
  `
)

Начальная загрузка приложения в порядке.Нажатие на один из заголовков должно инициировать повторное получение, чтобы данные списка могли быть отсортированы по переданным параметрам.Когда я запускаю повторное получение, сервер отвечает правильными данными, однако , компонент не перерисовывается.

Я подозреваю, что моя проблема связана с тем, как я здесь определил фрагменты,Ошибка консоли при начальной загрузке страницы:

RelayModernSelector: Expected object to contain data for fragment
`AppRefetchContainer_list`, got `{"list":[{"__fragments":
{"ItemComponent_item":{}},"__id":"[some_valid_id]","__fragmentOwner":null},{...

Вопрос (ы):

  1. Я не совсем уверен, как интерпретировать эту ошибку.Это причина, по которой я не могу перерисовать интерфейс?

  2. Я знаю, что этот подход может быть не идеальным, но как я могу refetch из компонента, который не обязательнофрагмент запроса?

С удовольствием предоставим любые разъяснения или пропущенный контекст:)

...