Reactjs 如何使props.relay.setVariables更新我的数据?

Reactjs 如何使props.relay.setVariables更新我的数据?,reactjs,relayjs,relay,Reactjs,Relayjs,Relay,我试图使用搜索组件的“onChange”来过滤使用this.props.relay.setVariables的结果,但没有任何结果被重新呈现。我还希望当它进行过滤时,它仍然会使用洗牌组件。 我们先访问DB,所有这些后续的中继查询都来自缓存(不确定这是否相关) const GamesScreen=React.createClass({ 道具类型:{ 查看器:PropTypes.object, }, 搜索(e){ 让searchStr=e.target.value; this.props.relay

我试图使用搜索组件的“onChange”来过滤使用this.props.relay.setVariables的结果,但没有任何结果被重新呈现。我还希望当它进行过滤时,它仍然会使用洗牌组件。 我们先访问DB,所有这些后续的中继查询都来自缓存(不确定这是否相关)

const GamesScreen=React.createClass({
道具类型:{
查看器:PropTypes.object,
},
搜索(e){
让searchStr=e.target.value;
this.props.relay.setVariables({query:searchStr},onFetch);
},
onFetch(){
//需要在这里发生一些事情来实际过滤和重新渲染吗?
},
获取主题()
{
返回this.props.viewer.subjects.edges;
},
渲染()
{
const games=this.getSubjects().map(游戏=>{
返回(
);
});
返回(
{游戏}
);
},
});
导出默认中继.createContainer(GamesScreen{
初始变量:{
查询:“”,
},
片段:{
查看器:()=>Relay.QL`
查看器上的片段{
主题(查询:“”,第一个:5)
{
边缘{
节点{
名称
}
}
},
${TopBar.getFragment('viewer')},
}
`,
},
});

您只需要在片段中使用变量。在GraphQL中,变量是通过在变量名前面加上
$
来使用的,有点像bash或其他什么:

export default Relay.createContainer(GamesScreen, {
  initialVariables: {
    query: '',
  },
  fragments: {
    viewer: () => Relay.QL`
      fragment on Viewer {
        subjects(query: $query, first: 5) // <-- USE $query TO MODIFY FRAGMENT AT RUNTIME
         {
          edges {
            node {
              name
            }
          }
        },
        ${TopBar.getFragment('viewer')},
      }
    `,
  },
});
导出默认中继.createContainer(GamesScreen{
初始变量:{
查询:“”,
},
片段:{
查看器:()=>Relay.QL`
查看器上的片段{

subject(query:$query,first:5)/您只需要在片段中使用变量。在GraphQL中,变量是通过在变量名前面加上
$
来使用的,有点像bash或其他什么:

export default Relay.createContainer(GamesScreen, {
  initialVariables: {
    query: '',
  },
  fragments: {
    viewer: () => Relay.QL`
      fragment on Viewer {
        subjects(query: $query, first: 5) // <-- USE $query TO MODIFY FRAGMENT AT RUNTIME
         {
          edges {
            node {
              name
            }
          }
        },
        ${TopBar.getFragment('viewer')},
      }
    `,
  },
});
导出默认中继.createContainer(GamesScreen{
初始变量:{
查询:“”,
},
片段:{
查看器:()=>Relay.QL`
查看器上的片段{
主题(查询:$query,first:5)//