React Router v4 - Yönlendirme Bileşeni (güncelleme 2017/04/15)
V4'ün önerdiği yol, oluşturma yönteminizin bir yönlendirmeyi yakalamasına izin vermektir. Yönlendirme bileşeninin gösterilmesi gerekip gerekmediğini belirlemek için durum veya props kullanın (daha sonra tetikleyici bir yönlendirmedir).
import { Redirect } from 'react-router';
// ... your class implementation
handleOnClick = () => {
// some action...
// then redirect
this.setState({redirect: true});
}
render() {
if (this.state.redirect) {
return <Redirect push to="/sample" />;
}
return <button onClick={this.handleOnClick} type="button">Button</button>;
}
Referans: https://reacttraining.com/react-router/web/api/Redirect
React Router v4 - Referans Yönlendirici Bağlamı
Router
React bileşeninin maruz kaldığı bağlamından da yararlanabilirsiniz .
static contextTypes = {
router: PropTypes.shape({
history: PropTypes.shape({
push: PropTypes.func.isRequired,
replace: PropTypes.func.isRequired
}).isRequired,
staticContext: PropTypes.object
}).isRequired
};
handleOnClick = () => {
this.context.router.push('/sample');
}
<Redirect />
Kaputun altında böyle çalışır.
Referans: https://github.com/ReactTraining/react-router/blob/master/packages/react-router/modules/Redirect.js#L46,L60
React Router v4 - Geçmiş Nesnesini Harici Olarak Değiştir
Yine de v2 uygulamasına benzer bir şey yapmanız gerekiyorsa, bir kopyasını oluşturabilir ve BrowserRouter
ardından history
dışa aktarılabilir sabit olarak gösterebilirsiniz . Aşağıda temel bir örnek verilmiştir, ancak gerekirse özelleştirilebilir sahne ile enjekte etmek için oluşturabilirsiniz. Yaşam döngüleriyle ilgili bazı uyarılar vardır, ancak Yönlendiriciyi v2'de olduğu gibi her zaman yeniden göndermelidir. Bu, bir eylem işlevinden gelen bir API isteğinden sonra yeniden yönlendirmeler için yararlı olabilir.
// browser router file...
import createHistory from 'history/createBrowserHistory';
import { Router } from 'react-router';
export const history = createHistory();
export default class BrowserRouter extends Component {
render() {
return <Router history={history} children={this.props.children} />
}
}
// your main file...
import BrowserRouter from './relative/path/to/BrowserRouter';
import { render } from 'react-dom';
render(
<BrowserRouter>
<App/>
</BrowserRouter>
);
// some file... where you don't have React instance references
import { history } from './relative/path/to/BrowserRouter';
history.push('/sample');
En son BrowserRouter
genişletilecek: https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/modules/BrowserRouter.js
React Router v2
browserHistory
Örneğe yeni bir durum aktarın:
import {browserHistory} from 'react-router';
// ...
browserHistory.push('/sample');
Referans: https://github.com/reactjs/react-router/blob/master/docs/guides/NavigatingOutsideOfComponents.md