我不知道为什么会这样。
我正在收听订阅postAdded
,每次我使用变异创建帖子时都会发布。
import React, { Component } from 'react'
import { graphql, gql } from 'react-apollo'
class App extends Component {
componentDidMount() {
this.props.subscribeToNewPosts()
}
render() {
return (
<div>
<h1>Hello world</h1>
{console.log(this.props)}
</div>
)
}
}
const Query = gql`
query Posts {
posts {
id
title
content
author {
firstName
lastName
}
}
}
`
const Subscription = gql`
subscription postAdded {
postAdded {
id
title
content
author {
firstName
lastName
}
}
}
`
App = graphql(Query, {
name: 'posts',
props: props => {
return {
subscribeToNewPosts: () => {
return props.posts.subscribeToMore({
document: Subscription,
updateQuery: (prev, { subscriptionData }) => {
if(!subscriptionData.data) {
return prev
}
const newPost = subscriptionData.data.postAdded
console.log(newPost)
return {
...prev,
posts: [...prev.posts, newPost]
}
}
})
},
posts: props.posts
}
}
})(App)
export default App
错误:
答案 0 :(得分:0)
首先,这很可能是服务器实施问题。错误可能是由graphql-tools抛出的,这是你的graphql终点。
在官方博客上关注Full-stack + GraphQL教程的第二部分时,发生了同样的事情。
虽然不一定是相同的情况,但我发生的事情是教程导出架构对象:export { schema }
,相当于export { schema: schema }
而不是默认的常规导出,例如export default schema
在我的graphql服务器端点中,我使用import schema from './src/schema'
导入这是错误的,因为架构被导出为子对象而不是默认导出。我的案例的正确导入应该是import { schema } from './src/schema'
TL; DR检查您的服务器代码,检查您的导出和导入语句。错误消息确实具有误导性,但很可能与模块导入/导出有关。
如果我们使用webpack编译而不是像教程中那样使用babel-node,可以避免或提供更明确的信息。