Как передать переменные для refetchQueries в Apollo - PullRequest
0 голосов
/ 29 апреля 2018

Я не уверен, что лучше всего передавать variables в refetchQueries опциях. В приведенном ниже примере переменные {id: this.props.item.id}

Но прохождение this.props.item.id вернуло ошибку , поскольку MyComponent еще не создано, поэтому this.props не определено.

function mapStateToProps(state) {
  return {
    item: state.item
  };
}

MyComponent = connect(mapStateToProps, matchDispatchToProps)(
  MyComponent
);

MyComponent = graphql(createItemImage, {
  name: "createItemImage",
  options: {
    refetchQueries: [
      {
        query: getEntity,
        variables: { id: this.props.item.id }
      }
    ]
  }
  })(MyComponent);

Значение id будет доступно только во время выполнения.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Это то, что в конечном итоге работает, обратитесь к ownProps и порядку (оператор connect должен быть после оператор graphql)

MyComponent = graphql(createItemImage, {
  name: "createItemImage",
  options: ownProps => ({
    refetchQueries: [
      {
        query: getEntity,
        variables: { id: ownProps.item.id }
      }
    ]
  })
})(MyComponent);

MyComponent = connect(mapStateToProps, matchDispatchToProps)(
  MyComponent
);
0 голосов
/ 29 апреля 2018

Вам необходимо явно передать переменную item.id компоненту. Поэтому добавьте в функцию переменную именования id

 MyComponent = graphql(createItemImage, {
  name: "createItemImage",
  options: {
    refetchQueries: [
      {
        query: getEntity,
        variables: { id: id }
      }
    ]
  }
})(MyComponent, id);

export default MyComponent

Тогда при вызове компонента используйте следующий синтаксис

<MyComponent id={this.props.item.id}>

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...