Pat*_*ick 9 reactjs react-router
React-router是一个非常糟糕的开始......看起来基本不起作用.使用react-router 2.0.0我的链接组件将URL更新为/ about,但我的页面之后不会呈现About组件...
入口点js
var React = require('react');
var ReactDOM = require('react-dom');
var Router = require('react-router').Router;
var Route = require('react-router').Route;
var hashHistory = require('react-router').hashHistory;
var App = require('./components/App.react');
var About = require('./components/About');
ReactDOM.render(
<Router history={hashHistory} >
<Route path="/" component={App}>
<Route path="about" component={About} />
</Route>
</Router>,
document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)
App.js
'use strict';
var React = require('react');
var Link = require('react-router').Link;
var Header = require('./Header');
var UserPanel = require('./UserPanel');
var ModelPanel = require('./ModelPanel.react');
var EventPanel = require('./event/EventPanel');
var VisPanel = require('./vis/VisPanel');
var LoginForm = require('./LoginForm');
var AppStore = require('../stores/AppStore');
var AppStates = require('../constants/AppStates');
var App = React.createClass({
[... code omitted ...]
render: function() {
var viewStateUi = getViewStateUi(this.state.appState);
return (
<div>
<Header />
<Link to="/about">About</Link>
{viewStateUi}
</div>
);
}
});
Run Code Online (Sandbox Code Playgroud)
Mar*_*son 11
由于"关于"路线是"App"路线的子路线,因此您需要添加this.props.children
到App组件:
var App = React.createClass({
render: function() {
var viewStateUi = getViewStateUi(this.state.appState);
return (
<div>
<Header />
<Link href="/about">About</Link>
{viewStateUi}
{this.props.children}
</div>
);
}
});
Run Code Online (Sandbox Code Playgroud)
或分开您的路线:
ReactDOM.render(
<Router history={hashHistory} >
<Route path="/" component={App} />
<Route path="/about" component={About} />
</Router>,
document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)
Art*_*lho 11
出于某种原因,<Link>
使用下面的配置,s不适合我.
// index.js
ReactDOM.render(
<Provider store={store}>
<BrowserRouter >
<App />
</BrowserRouter>
</Provider>,
document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)
// App.js
return (
<div className="App">
<Route exact={true} path="/:lang" component={Home} />
<Route exact={true} path="/" render={() => <Redirect to={{ pathname: 'pt' }} />} />
<Route path="/:lang/play" component={Play} />} />
<Route path="/:lang/end" component={End} />
</div >
);
Run Code Online (Sandbox Code Playgroud)
Home组件有链接,但应用程序上的链接也会这样做.每次我点击它,它只会更改网址,但视图将保持不变.
当我将withRouter添加到App.js 时,我能够正常工作
export default withRouter(connect(mapStateToProps, { f, g })(App));
Run Code Online (Sandbox Code Playgroud)
我还是不明白发生了什么.也许它与redux有关,或者有一些我遗漏的细节.
归档时间: |
|
查看次数: |
18651 次 |
最近记录: |