尝试重新获取时Apollo客户端出现循环错误

时间:2017-01-16 02:00:17

标签: javascript reactjs apollostack react-apollo apollo-client

我的App组件有一个reload按钮。单击reload实际上应该通过重新触发graphql查询来执行重新提取。

我目前正在执行重新加载的方式是在用户点击reload时使用Apollos的重新获取功能。但是,单击重新加载时会出现以下错误:

enter image description here

这是我的graphql HOC代码:

const mapApiToProps = graphql(ASSETS_QUERY, {
  props: ({ ownProps, data }) => {
    return {
      assets: data.assets,
      isLoading: data.loading,
      handleReload: data.refetch // Doesn't currently work
    }
  }
});

这是我的问题:

export const ASSETS_QUERY = gql`
  query getUserAssets {
    assets {
      body
      id
    }
  }`

这是我的组件代码:

class App extends Component {
  render() {
    const {handleReload, isLoading, assets} = this.props;
    return (
      <div>
        <ReloadBtn handleReload={handleReload} isLoading={isLoading} />
        <AssetList assets={assets} />
      </div>
    )
  }
}

最后,我的连接:

export default compose(
  connect(mapStateToProps, mapDispatchToProps),
  mapApiToProps
)(App);

有关错误发生原因的任何见解?

2 个答案:

答案 0 :(得分:0)

return {
  assets: data.assets,
  isLoading: data.loading,
  handleReload: () => { data.refetch() }
}

答案 1 :(得分:0)

我遇到了同样的错误,出于某种原因,传递 () => refetch() 而不是 refetch 到 Button 的 onPress 为我解决了这个问题。所以

<Button onPress={() => refetch()} title="some button"/>

代替

<Button onPress={refetch} title="some button"/>