2017-06-28 7 views
1

はここGithunt反応するマスタサンプルコードに基づいて、アポロのサブスクリプションのための私のクライアント側のコードです:Apollo:クライアント側のサブスクリプションコード?

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ステートメントは、プログラムの実行を停止することはありません。

私には何が欠けていますか?

事前にすべての情報に感謝します。

答えて

0

this.propsにはsubscribeToMoreの機能が含まれていません。 githunt react masterのファイルの最後に追加されます。

はあなたも同じようなものを追加しました:あなたは試してみて、あなたのcomponentWillRecieveProps機能内this.props.data.subscribeToMoreを使用することができそうで

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 
 
    }), 
 
});

関連する問題