假设我在GraphQL架构的顶层定义了一个名为 country
的字段 . 我可以通过以下方式查询它:
query {
country(alpha2: "gb") {
name
}
}
在我的中继容器中,我可以使用 Country
上的片段指定我想要返回的属性:
export default Relay.createContainer(CountryComponent, {
fragments: {
country: () => Relay.QL`
fragment on Country {
name
}
`
}
}
如何从反应组件中更改 alpha2
参数的值?我可以将 country
字段嵌套在某个任意字段下,并在父节点上声明我的中继片段,但如果可能的话,宁可避免不必要地修改我的图形 .
1 回答
一般来说,我们认为像这样的顶级参数是路线上的参数 . 将它们视为流入React应用程序根目录的道具 .
如果我想用新道具重新绘制React应用程序,我只需使用新道具再次渲染它:
如果国家/地区代码是
Relay.Route
参数:我可以做类似的事情:
至于如何以及何时使用新路由参数重新渲染,您可以从React组件触发自定义事件,并使用相关的侦听器再次调用
ReactDOM.render
,但由于您使用的是react-router-relay
,因此您可以考虑简单地更改URL中的国家/地区代码,并让它使用新的countryCode
参数重新触发路由 .另见:http://facebook.github.io/relay/docs/guides-routes.html#routes-and-queries