这个问题更多地是关于我遇到的模式而不是问题的特定实例。
通常我会有一个Relay
容器来执行这样的查询:
getUserGroup(id: $id) {
users {
edges {
node {
widgets {
edges {
node {
id
widgetTags {
edges {
node {
tagName
}
}
}
}
}
}
}
}
}
}
换句话说:我想在WidgetList
组件中呈现数据,如下所示:
// WidgetList.js
User1:
Widget1:
TagA
TagB
Widget2:
TagA
TagC
User 2:
// ..etc etc
我的目标是根据Widget
WidgetTags
结果
我的问题是,为了过滤,我想我需要父级别的所有WidgetTag
信息。因为并非每个Widget
都有Tags
,所以我必须从User
方输入查询。
如何使用Relay
处理这样的模式?
到目前为止我尝试的选项是:
使用像state
这样的Mobx
管理应用集中整理我想要过滤的所有数据。每个Widget
将自己的数据添加到store
上的render
和每个update
,然后store
用于过滤Widgets
的数组在WidgetList render()
函数中。
我手动从query
级别的WidgetList
结果中提取相关数据,然后执行与步骤1中相同的过滤步骤。
但这些都不符合Relay
最佳做法,所以我想知道是否有更好的方法。
答案 0 :(得分:0)
您可以向widgets
字段添加参数。
例如,你可以添加一个参数" withTags"将标记数组作为输入并仅返回具有这些标记的小部件:
widgets(withTags: ['Sports', 'Art'])
听起来怎么样?