react-router 1.0.0-rc3 - 所有 URL 都映射到一个 React 组件
react-router 1.0.0-rc3 - All URLs are are mapped to only one React component
我有以下路线:
routes.jsx
var routes = (
<Route component={AfApp} path="/">
<Route path="/testpage" component={Test}/>
<Route path="testpage" component={Test}/>
</Route>
);
module.exports = routes;
但是当我导航到 mydomain/testpage
、mydomain/testpage/
和 mydomain/whatever
时,只有 AfApp 组件呈现,而不是 TestPage 组件或任何其他组件!
怎么了?
AfApp.jsx
export default class AfApp extends React.Component {
render() {
console.log('render');
return (
<div>
{this.props.children}
</div>
);
}
}
entry.jsx
import routes from './routes.jsx';
ReactDOM.render(<Router routes={routes} />, document.getElementById('content'));
React 版本为 0.14.0
我页面中包含的 bundle.js 包含以下内容:
var _appComponentsTestJsx2 = _interopRequireDefault(_appComponentsTestJsx);
var routes = _react2['default'].createElement(
_reactRouter.Route,
{ component: _appComponentsAfAppJsx2['default'], path: '/' },
_react2['default'].createElement(_reactRouter.Route, { path: '/testpage', component: _appComponentsTestJsx2['default'] }),
_react2['default'].createElement(_reactRouter.Route, { path: 'testpage', component: _appComponentsTestJsx2['default'] })
);
出于某种原因,我不明白添加历史记录(当然我不得不 运行 npm install history
)使问题消失了:
entry.jsx
import createBrowserHistory from 'history/lib/createBrowserHistory';
ReactDOM.render(<Router history={createBrowserHistory()} routes={routes} />, document.getElementById('content'));
我有以下路线:
routes.jsx
var routes = (
<Route component={AfApp} path="/">
<Route path="/testpage" component={Test}/>
<Route path="testpage" component={Test}/>
</Route>
);
module.exports = routes;
但是当我导航到 mydomain/testpage
、mydomain/testpage/
和 mydomain/whatever
时,只有 AfApp 组件呈现,而不是 TestPage 组件或任何其他组件!
怎么了?
AfApp.jsx
export default class AfApp extends React.Component {
render() {
console.log('render');
return (
<div>
{this.props.children}
</div>
);
}
}
entry.jsx
import routes from './routes.jsx';
ReactDOM.render(<Router routes={routes} />, document.getElementById('content'));
React 版本为 0.14.0
我页面中包含的 bundle.js 包含以下内容:
var _appComponentsTestJsx2 = _interopRequireDefault(_appComponentsTestJsx);
var routes = _react2['default'].createElement(
_reactRouter.Route,
{ component: _appComponentsAfAppJsx2['default'], path: '/' },
_react2['default'].createElement(_reactRouter.Route, { path: '/testpage', component: _appComponentsTestJsx2['default'] }),
_react2['default'].createElement(_reactRouter.Route, { path: 'testpage', component: _appComponentsTestJsx2['default'] })
);
出于某种原因,我不明白添加历史记录(当然我不得不 运行 npm install history
)使问题消失了:
entry.jsx
import createBrowserHistory from 'history/lib/createBrowserHistory';
ReactDOM.render(<Router history={createBrowserHistory()} routes={routes} />, document.getElementById('content'));