Apollo:客户端订阅代码?
Apollo: Client-Side Subscription Code?
这是我的 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
语句永远不会停止程序执行。
我错过了什么?
提前感谢大家提供的任何信息。
在标准情况下 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
这是我的 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
语句永远不会停止程序执行。
我错过了什么?
提前感谢大家提供的任何信息。
在标准情况下 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