reflayContainer在Relay Modern

时间:2017-10-02 13:09:18

标签: reactjs relayjs react-relay

在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会进行网络查询。理想情况下,当删除字符时,它应使用之前查询的相同数据。

1 个答案:

答案 0 :(得分:0)

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

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