这是我的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
语句永远不会停止程序执行。
我错过了什么?
提前致谢所有信息。
答案 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