reactjs - Apollo useSubscription 挂钩不发出新数据
问题描述
每当添加新帖子时,我都会创建订阅。订阅在graphiql
界面上运行良好。
这是我使用useSubscription
钩子的反应代码
export const SUSCRIBE_POSTS = gql`
{
subscription
posts {
newPost {
body
id
createdAt
}
}
}
`;
const {
loading: suscriptionLoading,
error: subscriptionError,
data: subscriptionData,
} = useSubscription(SUSCRIBE_POSTS);
当我尝试控制台日志时,subscriptionData
我什么也得不到。当我添加帖子时,它会正确保存在数据库中,useQuery
获取帖子的钩子也可以正常工作,但是当我添加新帖子时,我看不到订阅数据。我在控制台中也看不到任何问题。当我登录suscriptionLoading
时,Ido 一开始就变得真实。我不确定如何调试它。
根据文档https://www.apollographql.com/docs/react/data/subscriptions/正确完成客户端设置
这是代码
const httpLink = createHttpLink({
uri: "http://localhost:4000/",
});
const wsLink = new WebSocketLink({
uri: `ws://localhost:4000/graphql`,
options: {
reconnect: true,
},
});
const authLink = setContext(() => {
const token = localStorage.getItem("jwtToken");
return {
headers: {
Authorization: token ? `Bearer ${token}` : "",
},
};
});
const link = split(
// split based on operation type
({ query }) => {
const definition = getMainDefinition(query);
return (
definition.kind === "OperationDefinition" &&
definition.operation === "subscription"
);
},
wsLink,
authLink.concat(httpLink)
);
const client = new ApolloClient({
link: link,
cache: new InMemoryCache(),
});
export default (
<ApolloProvider client={client}>
<App />
</ApolloProvider>
);
解决方案
export const SUSCRIBE_POSTS = gql`
subscription
posts {
newPost {
body
id
createdAt
}
}
`;
您可以尝试删除订阅 gql 的最外面的括号吗?
推荐阅读
- node.js - 使用 nodejs 进行 gnupg 加密
- python - How to fill openCV contours with a color specified by its area in Python?
- kubernetes - kubectl cp 不会写入 pod
- javascript - 我怎么看这个响应中的错误 return res.status(400).json({ errors: errors.array() }); 我只是在控制台中看到 400 错误请求
- javascript - ChartJs:HorizontalBar 缺少背景颜色
- reactjs - React:根据 onchange 事件值从另一个状态更新属性
- javascript - 谷歌 api 客户端库的 maxCDN
- python - 如何将符号表达式转换为 Python 中的浮点数?
- python - ipywidgets 布局,垂直对齐框?
- shell - 使用 ansible 检查文件中的序列