Apollo:客户端订阅代码?

时间:2017-06-28 01:36:35

标签: apollo apollo-client apollostack graphql-subscriptions

这是我的Apollo订阅的客户端代码,基于Githunt-React-master示例代码:

componentWillReceiveProps(nextProps) {
    const fromID = Meteor.userId();
    const toID = nextProps.toID;
    if (!this.subscription && !nextProps.loading) {
        this.subscription = this.props.subscribeToMore({
            document: IM_SUBSCRIPTION_QUERY,
            variables: {fromID: `${fromID}`, toID: `${toID}`},
            updateQuery: (previousResult, {subscriptionData}) => {
                if (!subscriptionData.data) {
                    return previousResult;
                }
                const newFeedItem = subscriptionData.data.createIM[0];
                return update(previousResult, {
                    instant_message: {
                        $push: [newMsg],
                    },
                });
            }
        });
    }
}

我的订阅解析程序未被调用。也就是说,放在其中的debugger语句永远不会停止程序执行。

我错过了什么?

提前致谢所有信息。

1 个答案:

答案 0 :(得分:0)

在标准情况下,this.props不包含subscribeToMore功能。它被添加到githunt react master的文件末尾。

您是否还添加了以下内容:



const withData = graphql(COMMENT_QUERY, {
  options: ({
    params
  }) => ({
    variables: {
      repoName: `${params.org}/${params.repoName}`
    },
  }),
  props: ({
    data: {
      loading,
      currentUser,
      entry,
      subscribeToMore
    }
  }) => ({
    loading,
    currentUser,
    entry,
    subscribeToMore, // props.data.subscribeToMore is mapped to props.subscribeToMore
  }),
});




否则,您可以尝试在componentWillRecieveProps功能中使用this.props.data.subscribeToMore