我正在尝试设置一个基本的 graphQL 订阅,以便根据Nader Dabit 的书和这篇 Medium 帖子中的食谱,在创建消息时更新消息列表,而我的订阅永远不会在客户端中触发。奇怪的是,在 Amplify 管理 UI 的查询编辑器中,订阅按预期触发。然而,在应用程序中,它是蟋蟀。没有错误,什么都没有。
据我所知,我的版本唯一不寻常的是打字稿(以及//@ts-ignore
考虑到 SDK 缺少 Observable 类型所需的 's )。
创建消息:
const handleMessageSubmit = async () => {
try {
const response = await API.graphql(
graphqlOperation(mutations.createMessage, {
input: {
authorID: userState.person.id,
text: message,
messageGroupID,
},
}),
);
} catch (err) {
console.log(err);
}
};
订阅:
useEffect(() => {
const subscription = API.graphql(
graphqlOperation(subscriptions.onCreateMessage),
// @ts-ignore
).subscribe({
next: (event: any) => {
console.log('new message:', event);
},
error: (error: any) => {
console.log(error);
},
});
return () => {
console.log('unsubscribing');
// @ts-ignore
subscription.unsubscribe();
};
}, [messages]);