尝试使用 React 进行中继,今天遇到了这个问题。这是我到目前为止所做的。
根查询:
query {
tasks {
id
taskName
taskStatus
userId
}
}
React 组件层次结构
App
↳--TaskList (props: tasks)
↳--TaskListItem (props: task)
现在由于托管原则,我知道我必须在每个组件中编写片段来描述它们的数据需求。
任务列表项.js
const TaskListItemContainer = createFragmentContainer(
TaskListItem,
graphql`
fragment TaskListItem_task on task {
id
taskName
taskDone
authorId
}
`
);
任务列表.js
const TaskListContainer = createFragmentContainer(
TaskList,
graphql`
fragment TaskList_tasks on task {
tasks {
...TaskListItem_task
}
}
`
);
应用程序.js
<QueryRenderer
environment={relayEnvironment}
query={graphql`
query AppQuery {
...TaskList_tasks
}
`
}
当我运行中继编译器时,出现以下错误。
Fragment "TaskList_tasks" cannot be spread here as objects of type "Query" can never be of type "task".
App.js (3:15)
2: query AppQuery {
3: ...TaskList_tasks
^
4: }
由于这个问题,无法弄清楚如何组织结构。我是否应该修改模式只是为了方便客户端的片段结构和重用?