Tôi đã có relay
làm việc với react-native
, nhưng tôi là nhầm lẫn về làm thế nào để tận dụng tốt nhất các tuyến đường tiếp sức và container gốc, đặc biệt là khi làm việc với một Navigator
hiển thị nhiều tuyến đường.mảnh vỡ có điều kiện hoặc nhúng rễ container khi sử dụng Relay Phản ứng-Native
Lấy lớp sau đây:
var Nav = React.createClass({
renderScene(route, nav) {
switch(route.id) {
case 'first':
return <First navigator={nav} />
case 'second':
return <Second navigator={nav} />
}
},
render() {
<Navigator
initialRoute={{ id: 'first' }}
renderScene={this.renderScene}
/>
}
})
module.exports = Relay.createContainer(Nav, {
fragments: {
viewer:() => Relay.QL`
fragment on User {
${First.getFragment('viewer'},
${Second.getFragment('viewer'}
}
`
}
})
Trong lộ trình của bố mẹ tôi, sau đó tôi yêu cầu các mảnh User
đó xây dựng các truy vấn.
Vấn đề là đoạn sẽ bao gồm các trường được xác định bởi cả hai thành phần first
và second
, ngay cả khi chỉ một trong số chúng được hiển thị cùng một lúc.
Trong trường hợp này nên I:
1) trả về một Relay.RootContainer
trong renderScene
gọi lại? Có thường là ý tưởng tồi khi nhúng Relay.RootContainers
trong mỗi khác không?
renderScene(route, nav) {
switch(route.id) {
case 'first':
return (
<Relay.RootContainer
Component={First}
route={new FirstRoute()}
renderFetched={(data) => {
return <First navigator={nav} {...data} />
}}
/>
)
}
}
2) Sử dụng biến có điều kiện để bao gồm một đoạn?
initialVariables: {
first: true
},
fragments: {
viewer: (variables) => Relay.QL`
fragment on User {
${First.getFragment('viewer').if(variables.first)
}
`
}
Hoặc có đề xuất nào khác không?
đâu biến 'route' đến từ đâu? –
https://github.com/facebook/relay/blob/1cfd48d1df9ea726d6775931fea05bf2420c4cff/src/query/RelayQL.js#L54-L57 – steveluscher