リアストルータv4でネストされたルートを取得しようとしています。私は、彼らがネストされたルートをどのように行う。これは明らかに動作しますが、私はクラスの形式に変更したいこのリアストルータv4でネストされたルート - ソリューション
import React from 'react'
import {
BrowserRouter as Router,
Route,
Link
} from 'react-router-dom'
const BasicExample =() => (
<Router>
<div>
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/about">About</Link></li>
<li><Link to="/topics">Topics</Link></li>
</ul>
<hr/>
<Route exact path="/" component={Home}/>
<Route path="/about" component={About}/>
<Route path="/topics" component={Topics}/>
</div>
</Router>
)
const Home =() => (
<div>
<h2>Home</h2>
</div>
)
const About =() => (
<div>
<h2>About</h2>
</div>
)
const Topics = ({ match }) => (
<div>
<h2>Topics</h2>
<ul>
<li>
<Link to={`${match.url}/rendering`}>
Rendering with React
</Link>
</li>
<li>
<Link to={`${match.url}/components`}>
Components
</Link>
</li>
<li>
<Link to={`${match.url}/props-v-state`}>
Props v. State
</Link>
</li>
</ul>
<Route path={`${match.url}/:topicId`} component={Topic}/>
<Route exact path={match.url} render={() => (
<h3>Please select a topic.</h3>
)}/>
</div>
)
const Topic = ({ match }) => (
<div>
<h3>{match.params.topicId}</h3>
</div>
)
export default BasicExample
でこのページにhttps://reacttraining.com/react-router/web/guides/quick-start
を参照しています。
だから私はそれが正しいURLへのルート、問題は、私がリンクをクリックしたときにということである
index.js
render((
<Router>
<div>
<Route path="/" component={App}/>
</div>
</Router>
), document.getElementById('root')
);
App.js
class App extends Component {
render() {
return (
<div className="container">
<header>
<span className="icn-logo"><i className="material-icons">code</i></span>
<ul className="main-nav">
<li><Link to="/">Home</Link></li>
<li><Link to="/about">About</Link></li>
<li><Link to="/teachers">Teachers</Link></li>
<li><Link to="/courses">Courses</Link></li>
</ul>
</header>
<Route exact path="/" component={Home}/>
<Route path="/about" component={About}/>
<Route path="/teachers" component={Teachers}/>
<Route path="/courses" component={Course}/>
</div>
);
}
}
export default App;
の下に試してみましたそれは動作しますが、自分自身でURLを入力すると、リンクをクリックするかどうか、または自分でタイプするかどうかにかかわらず、同じURLにすべてレンダリングされていても、GET/aboutなどはできません。私は考えているApp
ルートが私はなぜ理解していない以外はレンダリングされていません。それは誰でも知っていますか?
また、最初のサンプルコードのようにmatchパラメーターを使用できるようにコードを変換するにはどうすればよいですか?トピックでは、パラメータとしてマッチオブジェクトを取っていると私は推測していますので、それは、その前のURLへの参照のいくつかの種類が
SOLUTIONSある
私は、ビデオの多くとして、ここでソリューションを提供するつもりですオーケーReact Routerのチュートリアルでは、React Router v4は扱っていません。私は新しいReact Routerに苦労しているnoobsがこの答えを助けてくれることを願っています。
したがって、基本的に資産要求でクライアント側のルートを区別することができなければならず、webpack-dev-server
はこれに最適なオプションを提供します。
あなたがしなければならないのは、常にサーバーからの応答
これは私の参照ですがない場合のindex.htmlを指しますwebpack.config.jsに
devServer: {
port: 3000,
historyApiFallback: {
index:'index.html'
}
}
を追加することです。それを読むのに役立つかもしれないhttps://jaketrent.com/post/pushstate-webpack-dev-server/
しかし、それはノードです...私は反応を使用してwebpackで構築しています。だからそれはまだ動作するはずですか?サンプルコードは明示的には使用されません – forJ
「Can not GET/about」というエラーが表示された場合、 '/ about'にマッチする(サーバ側の)ルートハンドラを探していて、見つけられていないサーバがあります。これは、URLに入力すると予想される動作です。 –
いいえサーバーでindex.htmlにすべてをルーティングしてもまだ動作しません。経路は定義されていません。 – forJ