React-Routerを使用してアプリケーション間で永続的なナビゲーションを作成しようとすると、問題が発生し、問題が発生する。私はちょうどリンクのカップルと、ページの上部にあるナビゲーションを持ってしようとしているcreate-react-app
と"react-router": "^3.0.2"
永続ナビゲーションReact-Router
を使用して
。私は入れませんエラーがUncaught Error: <Link>s rendered outside of a router context cannot navigate.
index.jsです:ナビゲーション
import React from 'react';
import ReactDOM from 'react-dom';
import { browserHistory } from 'react-router';
import { Router, Route } from 'react-router';
import Routes from './routes';
import App from './components/App';
import './index.css';
import Navigation from './components/Navigation';
ReactDOM.render(
<div>
<Navigation />
<Routes history={browserHistory} />
</div>,
document.getElementById('root')
);
/index.js
import React, { Component } from 'react';
import { Link } from 'react-router';
class Navigation extends Component {
render() {
return (
<div>
<ul>
<li><Link to="about">About</Link></li>
<li><Link to="not-found">Not Found</Link></li>
</ul>
</div>
);
}
}
export default Navigation;
routes.js
import React from 'react';
import { Router, Route, IndexRoute, Link, browserHistory } from 'react-router';
import App from './components/App';
import About from './components/About';
import NotFound from './components/NotFound';
import Navigation from './components/Navigation';
const Routes = (props) => (
<div>
<Router {...props}>
<Route path="/" component={App} />
<Route path="/about" component={About}/>
<Route path="*" component={NotFound} />
</Router>
</div>
);
export default Routes;
URL(つまり、localhost:8080/about)でナビゲートし、正しいページを表示できます。しかし、ナビゲーションが正しく動作するようにする方法を理解することはできません。
これで私の頭を包み込むのが難しい時が来ました。アプリケーションは実際には私のIndexRouteでなければならず、内部に入れ子にされたアプリケーションは他のすべてのコンポーネントでなければなりませんか?そこで、NavigationでレンダリングされたAppを持っています。ここでAboutをクリックするとAboutコンポーネントがAppコンポーネント内にネストされてレンダリングされます。 –
thats正しい、App内にレンダリングされたAbout(thatsは '{this.props.children}'のようになります)。 –
実際には、私は自分の答えを編集しようとしています、ちょっとあなたのルートを少し変更する必要があることに気付きました... ... –