为什么我们需要根查询?
Why do we need a root query?
QueryRenderer 接受一个“query”prop,其中包含由下游组件的片段组成的应用程序的最顶层查询:
const LinkListPage = () => (<QueryRenderer
query={ rootQuery }
{ ...otherProps }
render={
(error, props) =>
<LinkList viewer={ props.viewer } />
}
/>)
/* ... */
const rootQuery = graphql`
query LinkListPageQuery {
viewer {
...LinkList_viewer
}
}
`
在上面的例子中,片段“LinkList_viewer”是自给自足的,它告诉我们它向哪个容器提供数据,它填充了哪个prop。
为什么中继编译器不 assemble 自己查询根?为什么我们需要重复输入 props.viewer
,当什么传递到哪里是显而易见且明确的?手动构造根查询是否有帮助我们的情况?
根 query
用于区分请求幂等数据 (query
) 和请求会改变状态 (mutations
) 的数据其他方式 (subscriptions
).
我认为 Relay 库的哲学是不要尝试在使用它的实现中有太多的魔力,因此缺乏在只有一个节点的查询中自动传递数据。
QueryRenderer 接受一个“query”prop,其中包含由下游组件的片段组成的应用程序的最顶层查询:
const LinkListPage = () => (<QueryRenderer
query={ rootQuery }
{ ...otherProps }
render={
(error, props) =>
<LinkList viewer={ props.viewer } />
}
/>)
/* ... */
const rootQuery = graphql`
query LinkListPageQuery {
viewer {
...LinkList_viewer
}
}
`
在上面的例子中,片段“LinkList_viewer”是自给自足的,它告诉我们它向哪个容器提供数据,它填充了哪个prop。
为什么中继编译器不 assemble 自己查询根?为什么我们需要重复输入 props.viewer
,当什么传递到哪里是显而易见且明确的?手动构造根查询是否有帮助我们的情况?
根 query
用于区分请求幂等数据 (query
) 和请求会改变状态 (mutations
) 的数据其他方式 (subscriptions
).
我认为 Relay 库的哲学是不要尝试在使用它的实现中有太多的魔力,因此缺乏在只有一个节点的查询中自动传递数据。