मैं relay
react-native
के साथ काम मिल गया है के साथ रिले का उपयोग कर, लेकिन जब एक Navigator
के साथ काम कर रहा है कि कैसे सबसे अच्छा रिले मार्गों और जड़ कंटेनरों का उपयोग करने के बारे में उलझन में हूँ, विशेष रूप से जो कई मार्गों को प्रस्तुत करता है। मेरे माता-पिता मार्ग मेंसशर्त टुकड़े या एम्बेडेड रूट कंटेनर जब प्रतिक्रिया-मूलनिवासी
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'}
}
`
}
})
, मैं तो का अनुरोध User
टुकड़ा जो क्वेरी बनाता है:
निम्नलिखित वर्ग है।
समस्या यह है कि टुकड़ा first
और second
घटकों दोनों द्वारा परिभाषित उन क्षेत्रों सहित होगा, भले ही उनमें से केवल एक ही समय में प्रदर्शित किया जा रहा हो।
इस मामले मैं चाहिए:
1) renderScene
कॉलबैक में एक और Relay.RootContainer
वापसी? क्या यह आमतौर पर Relay.RootContainers
को एक-दूसरे के भीतर एम्बेड करना एक बुरा विचार है?
renderScene(route, nav) {
switch(route.id) {
case 'first':
return (
<Relay.RootContainer
Component={First}
route={new FirstRoute()}
renderFetched={(data) => {
return <First navigator={nav} {...data} />
}}
/>
)
}
}
2) एक टुकड़ा शामिल करने के लिए सशर्त चर का उपयोग करें?
initialVariables: {
first: true
},
fragments: {
viewer: (variables) => Relay.QL`
fragment on User {
${First.getFragment('viewer').if(variables.first)
}
`
}
या क्या अन्य सुझाव हैं?
चर 'कहाँ से आ रही route' है? –
https://github.com/facebook/relay/blob/1cfd48d1df9ea726d6775931fea05bf2420c4cff/src/query/RelayQL.js#L54-L57 – steveluscher