Reactjs 如何在React中使用Redux存储和GraphQl进行查询
我的GraphQl查询和变异调用有问题。我为应用程序构建了一个组件,如下所示Reactjs 如何在React中使用Redux存储和GraphQl进行查询,reactjs,graphql,apollo,Reactjs,Graphql,Apollo,我的GraphQl查询和变异调用有问题。我为应用程序构建了一个组件,如下所示 class ABC extends Component { componentDidMount(){ this.props.eventuser({ variables: { eventName: {id:this.props.activeEvent.cell.id} }, }).then(response => {
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的normal withApollo()函数没有类似的内容(或者我没有找到它)。
所以代码看起来有点混乱,因为它是旧代码和“新”代码的混合 如果有可能使用Apollo()重新蚀刻,我想继续。否则,我需要帮助为查询注入activeEvent的ID和Prop/State/Variable 其他信息:
- 有一个redux商店,里面有ID和其他一些东西
- 它是应用程序的一个组件,而不是完整的应用程序
- 所以我找到了一种解决问题的方法。您需要通过父元素将ID作为道具传递。看起来像这样:
App.js
//调用事件,将eventID从Redux传递给子元素
然后在子元素中,graphql导出如下所示:
Eventoverview.js
导出默认组合(
连接(MapStateTops)
,图形ql(查询1,{
选项:(道具)=>({变量:{
事件名称:{id:props.eventName},}),
名称:“eventuser”
}),graphql(查询2{
名称:“诱惑者”
}),图ql(Mutation1{
名称:“updateEventdata”
(事件概述)代码>
现在在查询中使用了ID,我得到了答案,因此我找到了一种解决问题的方法。您需要通过父元素将ID作为道具传递。看起来像这样:
App.js
//调用事件,将eventID从Redux传递给子元素
然后在子元素中,graphql导出如下所示:
Eventoverview.js
导出默认组合(
连接(MapStateTops)
,图形ql(查询1,{
选项:(道具)=>({变量:{
事件名称:{id:props.eventName},}),
名称:“eventuser”
}),graphql(查询2{
名称:“诱惑者”
}),图ql(Mutation1{
名称:“updateEventdata”
(事件概述)代码>
现在在查询中使用了ID,我在您的还原程序中得到了我的答案,请尝试为
{activeEvent:{cell:{ID:'''''''}}}
添加初始状态。这将阻止它在组件首次呈现时抛出。已经存在初始状态,问题不是它未找到或其他什么,问题是查询没有id,但它已被调度。分派在组件更改之前,所以通常它已经存在,但是die-graphql函数无法访问属性(我认为)。“connect()”在调用grapql()const Save=connect(mapstatetops)(ABC)之后;导出默认组合(“graphql bla”)(保存);在还原程序中,尝试为{activeEvent:{cell:{id:''''''}}
添加初始状态。这将阻止它在组件首次呈现时抛出。已经存在初始状态,问题不是它未找到或其他什么,问题是查询没有id,但它已被调度。分派在组件更改之前,所以通常它已经存在,但是die-graphql函数无法访问属性(我认为)。“connect()”在调用grapql()const Save=connect(mapstatetops)(ABC)之后;导出默认组合(“graphql bla”)(保存);