要解决"Apollo的useSubscription在新窗口中不起作用"的问题,首先需要确保以下几点:
以下是一个代码示例,展示了如何正确使用Apollo Client和useSubscription钩子:
import { ApolloClient, InMemoryCache, ApolloProvider, useSubscription, gql } from '@apollo/client';
const client = new ApolloClient({
uri: 'http://localhost:4000/graphql',
cache: new InMemoryCache(),
});
function App() {
return (
{/* Your app components */}
);
}
const SUBSCRIPTION_QUERY = gql`
subscription {
newMessage {
id
content
}
}
`;
function NewWindowComponent() {
const { data, loading, error } = useSubscription(SUBSCRIPTION_QUERY);
if (loading) return Loading...
;
if (error) return Error: {error.message}
;
return (
{data.newMessage.map(message => (
{message.content}
))}
);
}
通过这些步骤,你应该能够正确使用Apollo Client和useSubscription钩子在新窗口中订阅并接收来自服务器端的数据。确保你的服务器端也正确实现了相应的订阅功能。