首页 文章

为什么我们需要root查询?

提问于
浏览
0

QueryRenderer采用“查询”道具,其中包含由下游组件的片段组成的应用程序的最顶层查询:

const LinkListPage = () => (<QueryRenderer
  query={ rootQuery }
  { ...otherProps }
  render={
    (error, props) =>
      <LinkList viewer={ props.viewer } />
  }
/>)

/* ... */

const rootQuery = graphql`
  query LinkListPageQuery {
    viewer {
      ...LinkList_viewer
    }
  }
`

在上面的例子中,片段“LinkList_viewer”是自给自足的,它告诉我们它向哪个容器提供数据,以及它填充的支柱 .

为什么中继编译器不能自己组装那个根查询?为什么我们需要重复 props.viewer 的输入,当它立即显而易见且明确无法通过哪里?是否有任何情况下手动构建根查询有助于我们?

1 回答

  • 1

    query 用于区分要求幂等( query )的数据与要求将从其他方式( subscriptions )行为的数据改变状态( mutations )的数据 .

    我认为Relay库中的哲学是不要尝试在使用它的实现中有太多的魔力,因此缺少在只有一个节点的查询中自动传递数据 .

相关问题