我'm learning react router and just cut off part of the Github' s page我正在使用webpack和http-server在http://localhost:8080托管我的开发环境 . 当我去罗斯路径时,我看到了我的应用程序组件,但是当我转到http://localhost:8080/users时,我看不到用户组件 .
var React = require('react');
var ReactDOM = require('react-dom');
var Router = require('react-router').Router;
var Route = require('react-router').Route;
var browserHistory = require('react-router').browserHistory;
var App = React.createClass({
render: function () {
return <div>app</div>
}
});
// etc.
var Users = React.createClass({
render: function () {
return (
<div>users</div>
)
}
})
document.addEventListener("DOMContentLoaded", function () {
ReactDOM.render((
<Router history={browserHistory}>
<Route path="/" component={App}>
<Route path="users" component={Users}>
</Route>
</Route>
</Router>
), document.getElementById('main'));
});
//index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div id="main">
</div>
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script>
<script type="text/javascript" src="bundle.js"></script>
</body>
</html>
2 回答
我有完全相同的问题 . 所以事情是,
users
是app
的孩子 . 因此,无论何时渲染/users
,首先渲染app
. 但是在应用程序定义中,您必须指定要将其子项呈现的位置:{this.props.children}
. 所以要么将其添加到定义中:或者将用户带到与app相同的级别(我想你不想这样做):
供参考:https://github.com/reactjs/react-router#whats-it-look-like
试试这个:
改变了什么:
我添加了
<div>{this.props.children}</div>
,其中子项(在本例中为Users)组件被呈现我添加了
<Link to="/users">/users</Link>
.现在,如果你点击链接,它就像一个魅力!
请注意,如果您使用的是webpack dev服务器,则浏览器URL将不会与您实际访问的URL相同 . 我有这个问题,虽然你可能有同样的斗争) . 因此,而不是
http://localhost:8000/webpack-dev-server/
打开http://localhost:8000/
(重定向到http://localhost:8000/#/?_k=some_weird_hash
)和http://localhost:8000/#/users
将工作 .