1

在 Relay Modern refetchContainer 与refetchOptions: { force: true }和给出相同的结果refetchOptions: { force: false }

我有一个重新获取容器,如下所示:

export default createRefetchContainer(radium(UserPicker), graphql`
  fragment UserPicker_company on Company
  @argumentDefinitions(
    searchString: { type: "String", defaultValue: "" }
  ) {
    userSearch(text: $searchString, first: 10) {
      edges {
        node {
          id
          name
          email
          picture
        }
      }
    }
  }
`, graphql `
  query UserPickerRefetchQuery($companyId: ID, $searchString: String) {
    company(id: $companyId) {
      ...UserPicker_company @arguments(searchString: $searchString)
    }
  }
`);

在输入标签的 onChange 方法中,我有以下代码:

onInputChange = (e) => {
  const value = e.target.value;
  this.props.relay.refetch({ searchString: value });
}

当我输入新字符以及删除字符时,中继会进行网络查询。理想情况下,当字符被删除时,它应该使用之前查询的相同数据。

4

1 回答 1

0

Relay Modern 默认情况下不为网络请求实现客户端缓存配置。这个想法是通过允许用户选择要缓存哪些查询以及不缓存哪些查询来给予用户更多控制权。

RelayQueryResponseCache可以在这里找到一些使用的实现建议: https ://github.com/facebook/relay/issues/1687#issuecomment-302931855

于 2017-10-05T14:36:24.523 回答