如何解决GraphQL / Relay - 是否需要在主 QueryRenderer 中查询所有表?
我是 GraphQL 和 Relay 的新手,我正在为查询、片段、......传播和传递道具而苦苦挣扎。我认为我不必要地通过许多组件传递道具。我想学习如何将我的数据对象从 QueryRenderer 传送到深度嵌套的组件,跳过所有祖先组件。
假设我有一个这样的组件结构。我需要来自应用深处的 EmojisList
组件内的“表情符号”表中的表情符号列表。我不确定在哪里传播或传递道具或何时要求实际标量。
<MainApp>
<QueryRenderer
environment={environment}
query={graphql`
query MainAppQuery {
currentPerson { // current user
...Timeline_currentPerson
}
allEmojis {
...ReactionBar_emojisList
}
}
`}
/>
<Timeline currentPerson={props.currentPerson}>
<PostList>
<Post>
<ReactionBar>
<EmojisList>
// I need this list
export default createFragmentContainer(ReactionBar,{
emojisList: graphql`
fragment ReactionBar_emojisList on EmojisConnection @relay(plural: true) {
edges {
node {
name
rowId
}
}
}
`,});
</EmojisList>
</ReactionBar>
</Post>
</PostList>
</Timeline>
</MainApp>
解决方法
您可以使用Fragment Container
用 textarea{
width: 400px;
height: 400px;
resize:none;
}
HOC 包裹 <EmojiList />
组件,然后它将获取您需要的所有数据,这些数据是您从 createFragmentContainer
获取的根目录。
数据可以作为组件内部的 props 访问
QueryRenderer
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。