Reactjs 反应路由器不呈现子组件
我正在学习react路由器,刚刚切断了Github的一部分,我正在使用webpack和http服务器来托管我的开发环境。当我转到routh路径时,我会看到我的应用程序组件,但当我转到时,我不会看到用户组件Reactjs 反应路由器不呈现子组件,reactjs,react-router,children,Reactjs,React Router,Children,我正在学习react路由器,刚刚切断了Github的一部分,我正在使用webpack和http服务器来托管我的开发环境。当我转到routh路径时,我会看到我的应用程序组件,但当我转到时,我不会看到用户组件 var React=require('React'); var ReactDOM=require('react-dom'); var-Router=require('react-Router')。路由器; var Route=require('react-router')。路由; var br
var React=require('React');
var ReactDOM=require('react-dom');
var-Router=require('react-Router')。路由器;
var Route=require('react-router')。路由;
var browserHistory=require('react-router')。browserHistory;
var App=React.createClass({
渲染:函数(){
返回应用程序
}
});
//等等。
var Users=React.createClass({
渲染:函数(){
返回(
使用者
)
}
})
document.addEventListener(“DOMContentLoaded”,函数(){
ReactDOM.render((
),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>
我也有同样的问题。所以问题是,
用户
是应用程序
的孩子。因此,无论何时渲染/users
,它都会首先渲染应用程序
。但在应用程序定义中,您必须指定要在何处呈现其子级:{this.props.children}
。因此,要么将其添加到定义中:
var App = React.createClass({
render: function () {
return <div>{this.props.children}</div>
}
});
// etc.
var-App=React.createClass({
渲染:函数(){
返回{this.props.children}
}
});
//等等。
或者将用户带到与应用程序相同的级别(我猜您不想这样做):
document.addEventListener(“DOMContentLoaded”,函数(){
ReactDOM.render((
),document.getElementById('main');
});
作为参考:试试这个,然后:
var React = require('react');
var ReactDOM = require('react-dom');
import { Router, Route, Link, browserHistory } from 'react-router'
var App = React.createClass({
render() {
return <div>
<ul>
<li><Link to="/users">/users</Link></li>
</ul>
<div>app</div>
<div>{this.props.children}</div>
</div>
}
})
var Users = React.createClass({
render() {
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'));
});
var React=require('React');
var ReactDOM=require('react-dom');
从“react Router”导入{Router,Route,Link,browserHistory}
var App=React.createClass({
render(){
返回
- /使用者
应用程序
{this.props.children}
}
})
var Users=React.createClass({
render(){
返回(
使用者
)
}
})
document.addEventListener(“DOMContentLoaded”,函数(){
ReactDOM.render((
),document.getElementById('main');
});
改变了什么:
- 我添加了
,子组件(在本例中为用户)将在其中呈现{this.props.children}
- 我添加了
/users
请注意,如果您使用的是webpack dev服务器,浏览器URL将与您实际使用的URL不同。)我有这个问题,尽管你可能也有同样的挣扎)。因此,与其使用
http://localhost:8000/webpack-开发服务器/
打开http://localhost:8000/
(它重定向到http://localhost:8000/#/?_k=some_weird_hash
)和http://localhost:8000/#/users
行得通。hi@fodma1我按照你在第一条建议中提到的做了,但没有成功。您还需要更改其他内容吗?@jlei好吧,我有另一个想法:您的HTML是什么样子的?您的目标是document.getElementById('main')
,我使用了document.body
我将其更改为document.body,但它仍然不起作用-您介意吗。但是应用程序组件仍然可以工作,所以用户组件没有出现是很奇怪的。我对它进行了编辑,以包含我的HTML,这很不错,basici也尝试将用户带到同一行,但也不起作用。您用来查看用户组件的URL是什么?它是?
document.addEventListener("DOMContentLoaded", function () {
ReactDOM.render((
<Router history={browserHistory}>
<Route path="/" component={App}>
</Route>
<Route path="/users" component={Users}>
</Route>
</Router>
), document.getElementById('main'));
});
var React = require('react');
var ReactDOM = require('react-dom');
import { Router, Route, Link, browserHistory } from 'react-router'
var App = React.createClass({
render() {
return <div>
<ul>
<li><Link to="/users">/users</Link></li>
</ul>
<div>app</div>
<div>{this.props.children}</div>
</div>
}
})
var Users = React.createClass({
render() {
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'));
});