react-routerを利用し、http://.../detail/:idにアクセスすると、
指定したIDが画面に表示される処理を作成しています。
IDを指定して詳細画面を表示するイメージです。
EX:
http://.../detail/1 <- ID::1の詳細情報を表示
http://.../detail/36 <- ID::36の詳細情報を表示
ボタン押下時に指定したID情報をDetailコンポーネントに渡し、
画面に表示するところまでは動作しているのですが、
URL直打ち、あるいはブラウザのリロードを行うと、404エラーになってしまいます。
原因や改善方法がお分かりの方がいらっしゃれば、ご教授をお願いいたします。
完全なソースは下記となります。
javascript
1import React, { Component } from 'react'; 2import ReactDOM from 'react-dom'; 3import { IndexRoute, Link, Router, Route, browserHistory, hashHistory } from 'react-router'; 4 5class Container extends Component { 6 render() { 7 return ( 8 <section id="container"> 9 <SideMenu /> 10 <Main component={this.props.children}/> 11 </section> 12 ) 13 } 14} 15 16class SideMenu extends Component { 17 style() { 18 return ({ 19 listStyle: 'none' 20 }) 21 } 22 render() { 23 return ( 24 <section id="side-menu"> 25 <ul className="main-nav" style={this.style()}> 26 <li><Link to="/">index</Link></li> 27 <li><Link to="/A">A</Link></li> 28 <li><Link to="/B">B</Link></li> 29 <li><Link to="/ADD/1">ADD</Link></li> 30 </ul> 31 </section> 32 ); 33 } 34} 35 36class Main extends Component { 37 render() { 38 return ( 39 <section id="main"> 40 { this.props.component } 41 </section> 42 ); 43 } 44} 45 46class PageA extends Component { 47 render() { 48 return (<div>A</div>); 49 } 50} 51 52class PageB extends Component { 53 render() { 54 return (<div>B</div>); 55 } 56} 57 58class ADD extends Component { 59 render() { 60 return ( 61 <div> 62 <div>ADD</div> 63 <div>{ this.props.params.id }</div> 64 </div> 65 ); 66 } 67} 68 69ReactDOM.render(( 70 <Router history={browserHistory}> 71 <Route path="/" component={Container}> 72 <Route path="/A" component={PageA} /> 73 <Route path="/B" component={PageB} /> 74 <Route path="/ADD/:id" component={ADD} /> 75 </Route> 76 </Router> 77), document.querySelector('#wrapper'));
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。