React native apollo客户端中的Refetch查询

React native apollo客户端中的Refetch查询,react-native,graphql,apollo-client,graphql-subscriptions,React Native,Graphql,Apollo Client,Graphql Subscriptions,因此,我正在尝试构建一个小型搜索应用程序。我遇到的问题是,当文本输入的状态更改时,我无法重新提取查询。这是密码 getInitialState: function(){ return { searchParams: '' " } }, render: function(){ return ( <View style={styles.container}> <SearchBar goSearch={this.goSearch}/> <

因此,我正在尝试构建一个小型搜索应用程序。我遇到的问题是,当文本输入的状态更改时,我无法重新提取查询。这是密码

getInitialState: function(){
 return {
  searchParams: '' "
 }
},
render: function(){
 return (
   <View style={styles.container}>
     <SearchBar goSearch={this.goSearch}/>
     <SearchResults searchParams={this.state.searchParams} />
   </View>
  )
 },
 goSearch: function(searchParams){
   this.setState({searchParams: searchParams});
  }
},

render:function(){
报税表(
{this.renderPosts()}
)
},
module.exports=graphql(fetchFilterPosts{
选项:(道具)=>{
返回{
变量:{searchParams:props.searchParams}
}
}
})(搜索结果);
我在这里试图做的是,当父组件的状态改变时,它将作为一个道具传递到searchResult组件中,并在graphQL查询中作为一个变量传递。现在的问题是,当道具改变时,我不能重新绘制它。我已设置组件将接收道具,以检查道具是否更改并重新蚀刻数据,但它似乎不起作用。我读过一些关于订阅和UpdateSeries的文章,但我不确定这是否是我正在寻找的解决方案。我需要绝望的帮助。提前谢谢

也许是这样

const getRemoteData=async ()=>(
  const res=await this.props.data.refetch();
  console.log(res)
)

getRemoteData();

你不应该重新蚀刻。如果道具发生了变化,变量也发生了变化,那么react apollo应该自动重新提取查询,除非它已经在缓存中。如果要确保即使数据在缓存中也能从服务器获取数据,可以将
forceFetch:true
传递给查询。查询已缓存。没错,它确实会自动重新提取,但它获取的查询是相同的。如何将其从缓存中删除?如果参数不变且数据已在缓存中,为什么需要重新蚀刻?如果由于服务器数据可能已更改而要重新蚀刻同一查询,可以在ObservaleQuery上使用refetch功能。如果数据不断变化,轮询可能是正确的选择。不过,请确保澄清您的问题,以便人们能够提供一个好的答案。您需要在选项中添加
fetchPolicy:“仅限网络”
,请参阅:我遇到了相同的问题,查询参数已更改,但apollo未进行重新蚀刻。我使用了redux react路由器:|添加一些描述。逻辑比一段代码更有帮助。
render: function(){
 return ( 
  <View>
   {this.renderPosts()}
  </View>
 )
},

module.exports = graphql(fetchFilterPosts, {
 options: (props) => {
 return {
   variables: {searchParams:props.searchParams}
  }
}
})(SearchResults);
const getRemoteData=async ()=>(
  const res=await this.props.data.refetch();
  console.log(res)
)

getRemoteData();