Это мой маршруты компонентКак использовать один и тот же маршрут для нескольких маршрутов в реакции?
<Route path="/" component={App}>
<IndexRoute component={Home}/>
<Route path="page1" component={Page1}/>
<Route path="page2" component={Page2}/>
<Route path="page3" component={Page3}/>
<Route path="articles/:id" component={DetailPage} />
</Route>
стр.1, стр.2, и page3 может быть доступен из панели навигации, но DetailPage может быть доступен только с каждой страницы. Мой путь был бы таким: /page1 =>/articles/1, и я хочу, чтобы это было /page1 =>/page1/articles/1
Есть ли способ установить текущий путь в компоненте маршрута например:
<Route path="/" component={App}>
<IndexRoute component={Home}/>
<Route path="page1" component={Page1}/>
<Route path="page2" component={Page2}/>
<Route path="page3" component={Page3}/>
<Route path="currentPath/articles/:id" component={DetailPage} />
</Route>
или любой другой способ?
EDIT
мой index.js:
ReactDOM.render(
<Provider store={store}>
<Router history={browserHistory} routes={routes} />
</Provider>
, document.getElementById('app')
)
мой routes.js:
export default {
<Route path="/" component={App}>
<IndexRoute component={Home}/>
<Route path="page1" component={Page1}/>
<Route path="page2" component={Page2}/>
<Route path="page3" component={Page3}/>
<Route path="currentPath/articles/:id" component={DetailPage} />
</Route>
}
В самом деле, большинство моих компонентов страниц очень похожи. каждая страница получает json-объекты и выполняет итерацию списка. Когда вы нажимаете элемент в списке, вы получаете доступ к компоненту DetailPage.
Согласитесь, гораздо более динамичный. Также для проверки вы можете легко использовать привязку [onEnter] (https://github.com/reactjs/react-router/blob/master/docs/API.md#onenternextstate-replace-callback) внутри '<путь маршрута = ": page /" component = {PageComponent}> ', чтобы вы могли реагировать перед входом в маршрут, проверяя, например, что параметризованная страница верна, и перенаправление в другое место в противном случае. – rauliyohmc
@erdysson Я не уверен, как это сделать. Должен ли я создавать PageComponent и вкладывать в него все страницы? – Dan
вы можете настроить их через опоры, если они очень похожи. Если это не так, вы можете передать компонент в качестве опоры для «PageComponent», и вы можете сделать его внутри, например, {this.props.childComponent} – erdysson