React
Реакция маршрутизации
Поиск…
Пример файла Routes.js, за которым следует использование Router Link в компоненте
Поместите файл, как показано ниже, в каталог верхнего уровня. Он определяет, какие компоненты отображать для каких путей
import React from 'react';
import { Route, IndexRoute } from 'react-router';
import New from './containers/new-post';
import Show from './containers/show';
import Index from './containers/home';
import App from './components/app';
export default(
<Route path="/" component={App}>
<IndexRoute component={Index} />
<Route path="posts/new" component={New} />
<Route path="posts/:id" component={Show} />
</Route>
);
Теперь в вашем верхнем уровне index.js, который является вашей точкой входа в приложение, вам нужно просто отобразить этот компонент Router следующим образом:
import React from 'react';
import ReactDOM from 'react-dom';
import { Router, browserHistory } from 'react-router';
// import the routes component we created in routes.js
import routes from './routes';
// entry point
ReactDOM.render(
<Router history={browserHistory} routes={routes} />
, document.getElementById('main'));
Теперь это просто вопрос использования Link вместо тегов <a> в вашем приложении. Использование Link свяжется с React Router, чтобы изменить маршрут React Router на указанную ссылку, которая, в свою очередь, отобразит правильный компонент, определенный в route.js
import React from 'react';
import { Link } from 'react-router';
export default function PostButton(props) {
return (
<Link to={`posts/${props.postId}`}>
<div className="post-button" >
{props.title}
<span>{props.tags}</span>
</div>
</Link>
);
}
React Routing Async
import React from 'react';
import { Route, IndexRoute } from 'react-router';
import Index from './containers/home';
import App from './components/app';
//for single Component lazy load use this
const ContactComponent = () => {
return {
getComponent: (location, callback)=> {
require.ensure([], require => {
callback(null, require('./components/Contact')["default"]);
}, 'Contact');
}
}
};
//for multiple componnets
const groupedComponents = (pageName) => {
return {
getComponent: (location, callback)=> {
require.ensure([], require => {
switch(pageName){
case 'about' :
callback(null, require( "./components/about" )["default"]);
break ;
case 'tos' :
callback(null, require( "./components/tos" )["default"]);
break ;
}
}, "groupedComponents");
}
}
};
export default(
<Route path="/" component={App}>
<IndexRoute component={Index} />
<Route path="/contact" {...ContactComponent()} />
<Route path="/about" {...groupedComponents('about')} />
<Route path="/tos" {...groupedComponents('tos')} />
</Route>
);
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow