1

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

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

在此处输入图像描述

这是我的 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);

任何洞察为什么会发生错误?

4

2 回答 2

0
return {
  assets: data.assets,
  isLoading: data.loading,
  handleReload: () => { data.refetch() }
}
于 2017-03-19T14:22:36.757 回答
0

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

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

代替

<Button onPress={refetch} title="some button"/>
于 2021-07-05T15:34:49.527 回答