我正在使用中继和react-router-relay,并试图组成几个中继容器。内部容器需要一个查询片段变量,该变量必须通过父容器从路由器向下传递。不能得到这个变量。
下面是代码的外观:
// A "viewer":
const UserQueries = { user: () => Relay.QL`query { user }` };
// A route to compose a message:
<Route
path='/compose/:id'
component={ ComposeContainer }
queries={ UserQueries }
/>
// A container:
const ComposeContainer = Relay.createContainer(
Compose,
{
initialVariables: {
id: null
},
fragments: {
user: () => Relay.QL`
fragment on User {
${ BodyContainer.getFragment('user') }
// other fragments
}
`
}
}
);
// And the composed container:
const BodyContainer = React.createContainer(
Body,
{
initialVariables: {
id: null
},
fragments: {
user: () => Relay.QL`
fragment on User {
draft(id: $id) {
// fields
}
}
`
}
}
);BodyContainer中的草案字段从不从路由param获取$id。RelayContainer.getFragment()的签名包含参数,这些参数似乎允许您传递参数和变量,但我不确定该如何使用。
发布于 2015-12-27 16:46:18
您在user上的<ComposeContainer>片段必须如下所示:
user: ({ id }) => Relay.QL`
fragment on User {
${BodyContainer.getFragment('user', { id })}
// other fragments
}
`另外,当您使用<BodyContainer>编写<ComposeContainer>时。您还需要将id作为一种工具传递。
<BodyContainer id={this.props.id} />还请参阅https://github.com/facebook/relay/issues/309上的其他讨论。
https://stackoverflow.com/questions/34481732
复制相似问题