refetchContainer 在 Relay Modern 的 refetchOptions 中使用或不使用 force 给出相同的结果

refetchContainer gives same results with or without force in refetchOptions in Relay Modern

在 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 });
}

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

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

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