【发布时间】:2018-06-09 13:47:42
【问题描述】:
我正在使用 Apollo Client 和 React,并且我正在寻找一种策略来保持我的组件和组件数据需求以这样一种方式位于同一位置,以便可能需要它进行查询的父/兄弟/子组件可以访问它和突变。我希望能够轻松更新数据需求,从而更新某些父组件查询或由父/兄弟/子中的突变返回的字段,以便准确更新我的 Apollo 缓存。
我尝试创建一个全局高级 graphql 目录,我的所有 queries/mutations.graphql 文件都位于该目录中,导入位于我的应用程序中的所有相关片段文件,然后直接导入这些文件,但这可能会变得乏味并且不会t 遵循父查询包含子片段的父/子主题。同样在大型项目中,您最终会在导入时遍历长文件路径。
我也尝试过在全局 graphql 目录中创建与组件文件对应的片段文件,但这并没有给我我正在寻找的“组件/数据要求”托管。
这行得通:
class CommentListItem extends Component {
static fragments = {
comment: gql`
#...
`,
}
}
class CommentList extends Component {
static fragments = {
comment: gql`
#...
${CommentListItem.fragments.comment}
`,
}
}
class CommentsPage extends Component {
static fragments = {
comment: gql`
#...
${CommentList.fragments.comment}
`,
}
}
graphql(gql`
query Comments {
comments {
...CommentsListItemComment
}
}
${CommentsPage.fragments.comment}
`)
但是,如果我想在 CommentsPage 的后代中进行突变,我无法引用来自 CommentsPage.fragments.comment 的片段组合。
对于这类事情有首选方法或最佳实践吗?
【问题讨论】:
标签: reactjs graphql apollo apollo-client react-apollo