在 redux 操作中反应 apollo 多个查询

Posted

技术标签:

【中文标题】在 redux 操作中反应 apollo 多个查询【英文标题】:React apollo multiple query in redux action 【发布时间】:2017-12-04 17:09:14 【问题描述】:

当我尝试做两个不同的查询时,我得到了这个错误我该如何解决它

``错误:需要查询选项。您必须在查询选项中指定您的 GraphQL 文档。

这是代码的 sn-p

//in my index class I dispatch some actions

componentDidMount () 
 this.props.fetchNavigationBarDataThunk();
 this.props.fetchActionToDoTitleDataThunk();
 

//then in my action I have something like that 

import ApolloClient,  createNetworkInterface  from 'apollo-client';
import gql from 'graphql-tag';

const opts = uri: 'http://localhost:8080/wfgen/graphql';
const networkInterface = createNetworkInterface(opts);
const client = new ApolloClient(networkInterface);

var query1 = gql`query ...`;

var query2= gql`query ...`;


export function fetchActionToDoTitleDataThunk () 
return (dispatch) => 
dispatch(fetchActionToDoTitleData())
client.query( query2 ).then((results) => 
  if (results.networkStatus === 7 && results.loading === false) 
    dispatch(fetchActionToDoTitleDataFulFilled(results));
  
  else
  ...


export function fetchNavigationBarDataThunk () 
return (dispatch) => 

dispatch(fetchNavigationBarData())
client.query(query).then((results) => 
  if (results.networkStatus === 7 && results.loading === false) 
    dispatch(fetchNavigationBarDataFulFilled(results));
  
  else
 ....

【问题讨论】:

【参考方案1】:

认为您的问题在于client.query( query2 )client.query(query)

首先,使用速记对象属性初始化, query2 等价于 query2: query2 - 但 ApolloClient 期望类似于 query: query2

其次,根据您提供的代码,query 未定义。我想你的意思是client.query(query: query1)client.query(query: query2)

【讨论】:

我只是想保持代码简短,所以我没有编写完整的查询,但感谢您的帮助

以上是关于在 redux 操作中反应 apollo 多个查询的主要内容,如果未能解决你的问题,请参考以下文章

在 apollo-react 查询后调度 redux 操作

React Apollo 查询返回后调度 Redux 操作

从为 GraphQL 分派的 redux 操作中访问 Apollo 客户端

使用 Redux Thunk 和 Apollo Graphql 做出反应 - 如何访问 client.query?

React GraphQL Apollo 和 Redux。如何查询数据并将其置于 store 的 initialState 中?

对 redux 工具包的 createSlice 中的多个操作做出反应