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 回答
根
query
用于区分要求幂等(query
)的数据与要求将从其他方式(subscriptions
)行为的数据改变状态(mutations
)的数据 .我认为Relay库中的哲学是不要尝试在使用它的实现中有太多的魔力,因此缺少在只有一个节点的查询中自动传递数据 .