0
我跟着FaceBook提供的react-relay-starter-kit創建了一個包含2條路徑的簡單應用程序。
但現在我想讓一個路由的組件調用另一個路由,同時將參數傳遞給此容器的片段。
換句話說,我有:
路由器配置:如何更改路由並將參數傳遞給中繼容器?
Relay.injectNetworkLayer(
new Relay.DefaultNetworkLayer(config.gqlUrl, {options...})
);
ReactDOM.render(
<Router
history={hashHistory}
render={applyRouterMiddleware(useRelay)}
routes={routes}
environment={Relay.Store}>
<Route path="/" component={App}/>
<Route path="/route1" component={Comp1} />
<Route path="/route2" component={Comp2} queries={comp2Query}/>
</Router>,
document.getElementById('root')
);
COMP1:
export default class Comp1 extends React.Component {
render() {
return (
<div>
<span onClick={()=>{//go to comp2 with val=1}>1</span>
<span onClick={()=>{//go to comp2 with val=2}>2</span>
<span onClick={()=>{//go to comp2 with val=3}>3</span>
</div>
);
}
}
組合物2:
class Comp2 extends React.Component {
render() {
return (
<div>
{this.props.info.text}
</div>
);
}
}
export default Relay.createContainer(Comp2, {
initialVariables: {
value: //the value set by the Comp1
},
fragments: {
info: (variables) =>{
return Relay.QL`
fragment on News{
text
}
`}}
});
我找不出一種方法將值傳遞給第二個路由器。
謝謝你的提示,它與此代碼爲我工作: 'hashHistory.push({ pathname:'/ home', query:{modal:true}, state:{maValue:true} });' 但在'Relay.createContainer'中,我無法訪問它,你知道一種方法來訪問傳遞給中繼容器的值嗎? – tahayk