不确定我在这里做错了什么。我的中继查询似乎是正确组合的(即我可以验证查询是否成功返回预期的结果)但是当应用程序在浏览器中呈现时,我收到Error: repeat() argument must be greater than or equal to 0 and not be infinity
的错误。
在我为分页结果添加片段(edge
+ node
)之前,应用程序一直很好:
const ConversationContainer = Relay.createContainer(Conversation, {
fragments: {
conversation: () => Relay.QL`fragment on Conversation {
id
fingerprint
unreadCount
messages(first: 3) {
pageInfo {
hasNextPage
}
edges {
node {
body
},
cursor
},
}
}`
}
})
和演示文稿组件:
class Conversation extends Component {
render() {
const { id, fingerprint, unreadCount, messages } = this.props.conversation;
return <div>
<div>conversation <code>{id}</code></div>
<div>fingerprint: <code>{fingerprint}</code>, unreadCount: {unreadCount}</div>
<pre>{JSON.stringify(messages, null, 2)}</pre>
</div>;
}
}
那么错误的原因是什么?
编辑:错误位于UI中,由我的根组件renderFailure
属性呈现(也作为控制台中的警告)
const root = <Relay.RootContainer
Component={AppContainer}
route={new AppRoute()}
renderLoading={() => <div>Loading...</div>}
renderFailure={(error, retry) => <div>Error: {error.message}</div>}
/>;
答案 0 :(得分:3)
我能想到的两件事:
这可能与您的GraphQL服务器有关,而与Relay无关。
我知道这真的很奇怪但你的服务器是否会以负值列值返回错误?
再次与错误有关,但这次是客户端模式验证。虽然您似乎表示您的查询运行正常,但这意味着您的架构有效。
您能告诉我们GraphQL服务器返回的内容吗?