【问题标题】:Apollo: Client-Side Subscription Code?Apollo:客户端订阅代码?
【发布时间】:2017-12-01 05:16:02
【问题描述】:

这是我的 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 语句永远不会停止程序执行。

我错过了什么?

提前感谢大家提供任何信息。

【问题讨论】:

    标签: apollo apollo-client apollostack graphql-subscriptions


    【解决方案1】:

    在标准情况下,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

    【讨论】:

      猜你喜欢
      • 2017-12-25
      • 2022-12-12
      • 2018-12-30
      • 2020-11-20
      • 2019-02-02
      • 2018-07-08
      • 2017-08-26
      • 2020-08-31
      • 2019-01-18
      相关资源
      最近更新 更多