我写了以下代码:
在下面的某些用户操作上调用方法:
handleFolderClicked = (topic, parent) => {
console.log('Main : handleFolderClicked called : ', parent);
this.props.relay.setVariables({
parentFolder: parent,
email: loginEmail
});
}
Main = Relay.createContainer(Main, {
initialVariables: {
pageSize: pageSize,
email: loginEmail,
parentFolder: parentFolder,
},
fragments: {
store: () => Relay.QL`
fragment on Store {
id,
fileConnection(first:999, email:$email, parentFolder:$parentFolder) {
${DirectoryListing.getFragment('files')},
}
users {
email,
}
}
`,
}
});
export default Main;
在页面加载时工作正常并获取结果但是当使用setVariables更改parentFolder的值时,它会抛出错误。
洞察力可能有用且值得赞赏。感谢
答案 0 :(得分:0)
我遇到了这个错误,我解决了这样的问题:
Store
必须实现Relay的Node
接口,这意味着它必须提供id: ID!
字段,如果使用返回的ID执行节点查询,则Store
必须退回。
在我的案例中,我命名了viewer
类型的根对象Viewer
;所以在实现Node
接口后,此查询必须起作用:
{
viewer {
id
}
}
返回:
{
"data": {
"viewer": {
"id": "Vmlld2VyOk5vbmU="
}
}
}
现在,如果我使用该ID运行节点Query,则必须返回查看器。所以对于查询:
{
node(id: "Vmlld2VyOk5vbmU=") {
id,
__typename
}
}
这应该是结果:
{
"data": {
"node": {
"id": "Vmlld2VyOk5vbmU=",
"__typename": "Viewer"
}
}
}
将所有viewer
/ Viewer
替换为store
/ Store
,它应该有效。