如何在React中使用Redux Store和GraphQl进行查询

时间:2017-07-24 09:19:20

标签: reactjs graphql apollo

我的GraphQl查询和变异调用存在问题。我为这个应用程序构建了一个组件

class ABC extends Component {
   componentDidMount(){
      this.props.eventuser({
        variables: {
            eventName: {id:this.props.activeEvent.cell.id}

        },

    }).then(response => {
        //response ...
    }).catch(err =>{
        console.log('Error',err);
    });
   }
   render(){
     some render things
   }
}
function mapStateToProps(store) {
   return {
        activeEvent: store.activeEvent
   };
}
const Save= connect(mapStateToProps)(ABC);
export default compose(
graphql(Query1,
   name:"eventuser"
   }),
graphql(Query2,{
   name:"alluser"
   }),
graphql(Mutation1,{
   name:"updateEventdata"
   }))(Save);

查询需要activeEvent附带的ID 我现在的问题是,GraphQl存在于activeEvent id之前(我想是这样)。

我不得不重新构建应用程序的这一部分以进行重新获取,而react-apollo的正常withApollo()函数没有类似的东西(或者我没有找到它)。
所以代码看起来有点混乱,因为它是旧的和“新”代码的掠夺。

如果有可能用withApollo()重新获取,我想继续这个。否则,我需要帮助来为查询

注入activeEvent的ID和Prop / State / Variable

其他信息:

  • 有一个redux商店,其中包含ID和其他一些东西
  • 它是应用程序的一个组件,而不是完整的应用程序

1 个答案:

答案 0 :(得分:0)

所以我找到了解决这个问题的方法。您需要通过父元素将ID作为prop传递。看起来像这样:
App.js
//call of the Event, passes the eventID from the Redux to the child element <Eventoverview eventName={this.props.activeEvent.cell.id} />
然后在子元素中,graphql导出如下所示:
 的 Eventoverview.js
export default compose(
    connect(mapStateToProps)
,graphql(Query1,{
   options: (props)=>({ variables: { eventName: {id:props.eventName}},}), name:"eventuser"
}),graphql(Query2,{ name:"alluser"
}),graphql(Mutation1,{ name:"updateEventdata"
}))(Eventoverview);

现在,在查询中使用了ID,我得到了我的答案