使用 React-router 在路由之间切换
Switching between routes using React-router
我目前正在使用 React js 和 React Router 构建我的第一个 Web 应用程序,因为我想开发一个单页应用程序。我只是用反应路由器做第一个例子,并试图在两条路线之间切换,但我无法让它工作。目标是拥有一个非常简单的 html 页面,其中包含 link 列表并在视图之间切换。
呈现 index.html 时,我看到 link 的列表,但是当我单击 link 时,我看到 url 路径发生变化,但是内容页面没有变化,react-router js 不应该处理这个问题吗?我错过了什么?
代码下方:
我的index.html:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>My First Webapp With React</title>
<link href="http://maxcdn.bootstrapcdn.com/bootswatch/3.3.4/flatly/bootstrap.min.css" type="text/css" rel="stylesheet" />
<link href="assets/css/styles.css" type="text/css" rel="stylesheet" />
</head>
<body>
<div id="main" class="container">
<!-- The App will be rendered here -->
</div>
<!-- Including the Google Maps API and the GMaps library -->
<script src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/gmaps.js/0.4.12/gmaps.min.js"></script>
<!-- Our compiled JavaScript source file -->
<script src="./compiled.js"></script>
</body>
</html>
我的 main.js 文件:
var React = require('react');
var App = require('./components/App');
var About= require('./components/About');
var Router = require('react-router').Router
var Route = require('react-router').Route
React.render(
<Router>
<Route path="/" component={App}>
<Route path="about" component={About}/>
</Route>
</Router>,
document.getElementById('main')
);
我的app.js:
var React=require('react');
var Link=require('react-router').Link;
var App=React.createClass({
getInitialState:function(){
return {}
},
render:function(){
return (<div>
<h1>App</h1>
<ul>
<li><Link to="/about">About</Link></li>
<li><Link to="/inbox">Inbox</Link></li>
</ul>
</div>)
}
});
module.exports = App;
还有我的about.js
var React=require('react');
var About=React.createClass({
render:function(){
return (<div>This is the about page</div>)
}
});
module.exports=About;
据我了解,您错过了 App 组件中的 {this.props.children}
。当你点击 link 时,React 必须知道如何将来自 react-route 的子组件传递给父组件,以处理特定的路由。 {this.props.children} 它就像一个巨大的喇叭,有助于做出反应以了解应该渲染的组件。
所以应该是:
//App component
return (<div>
<h1>App</h1>
<ul>
<li><Link to="/about">About</Link></li>
<li><Link to="/inbox">Inbox</Link></li>
</ul>
{this.props.children} // missed
</div>)
React-router Link is here。希望对您有所帮助
谢谢
我目前正在使用 React js 和 React Router 构建我的第一个 Web 应用程序,因为我想开发一个单页应用程序。我只是用反应路由器做第一个例子,并试图在两条路线之间切换,但我无法让它工作。目标是拥有一个非常简单的 html 页面,其中包含 link 列表并在视图之间切换。
呈现 index.html 时,我看到 link 的列表,但是当我单击 link 时,我看到 url 路径发生变化,但是内容页面没有变化,react-router js 不应该处理这个问题吗?我错过了什么?
代码下方:
我的index.html:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>My First Webapp With React</title>
<link href="http://maxcdn.bootstrapcdn.com/bootswatch/3.3.4/flatly/bootstrap.min.css" type="text/css" rel="stylesheet" />
<link href="assets/css/styles.css" type="text/css" rel="stylesheet" />
</head>
<body>
<div id="main" class="container">
<!-- The App will be rendered here -->
</div>
<!-- Including the Google Maps API and the GMaps library -->
<script src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/gmaps.js/0.4.12/gmaps.min.js"></script>
<!-- Our compiled JavaScript source file -->
<script src="./compiled.js"></script>
</body>
</html>
我的 main.js 文件:
var React = require('react');
var App = require('./components/App');
var About= require('./components/About');
var Router = require('react-router').Router
var Route = require('react-router').Route
React.render(
<Router>
<Route path="/" component={App}>
<Route path="about" component={About}/>
</Route>
</Router>,
document.getElementById('main')
);
我的app.js:
var React=require('react');
var Link=require('react-router').Link;
var App=React.createClass({
getInitialState:function(){
return {}
},
render:function(){
return (<div>
<h1>App</h1>
<ul>
<li><Link to="/about">About</Link></li>
<li><Link to="/inbox">Inbox</Link></li>
</ul>
</div>)
}
});
module.exports = App;
还有我的about.js
var React=require('react');
var About=React.createClass({
render:function(){
return (<div>This is the about page</div>)
}
});
module.exports=About;
据我了解,您错过了 App 组件中的 {this.props.children}
。当你点击 link 时,React 必须知道如何将来自 react-route 的子组件传递给父组件,以处理特定的路由。 {this.props.children} 它就像一个巨大的喇叭,有助于做出反应以了解应该渲染的组件。
所以应该是:
//App component
return (<div>
<h1>App</h1>
<ul>
<li><Link to="/about">About</Link></li>
<li><Link to="/inbox">Inbox</Link></li>
</ul>
{this.props.children} // missed
</div>)
React-router Link is here。希望对您有所帮助
谢谢