refetch Container 在 Relay Modern 的 refetch Options 中无论是不是强制都给出相同的结果
Posted
技术标签:
【中文标题】refetch Container 在 Relay Modern 的 refetch Options 中无论是不是强制都给出相同的结果【英文标题】:refetchContainer gives same results with or without force in refetchOptions in Relay Modernrefetch Container 在 Relay Modern 的 refetch Options 中无论是否强制都给出相同的结果 【发布时间】:2018-03-13 13:28:47 【问题描述】:在 Relay Modern refetchContainer 与 refetchOptions: force: true
和 refetchOptions: force: false
给出相同的结果。
我有一个像下面这样的 refetch 容器:
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】:Relay Modern 默认情况下不为网络请求实现客户端缓存配置。这个想法是通过允许用户选择要缓存哪些查询以及不缓存哪些查询来给予用户更多控制权。
一些使用RelayQueryResponseCache
的实现建议可以在这里找到:https://github.com/facebook/relay/issues/1687#issuecomment-302931855
【讨论】:
以上是关于refetch Container 在 Relay Modern 的 refetch Options 中无论是不是强制都给出相同的结果的主要内容,如果未能解决你的问题,请参考以下文章
使用 Relay Mutation 的结果作为 Relay Container Prop
react-apollo 中的 data.refetch() 函数如何工作
React Native & RTK Query - IsLoading on refetch 方法