Syl*_*lar 3 meteor reactjs iron-router
使用Meteor 1.2.0.1和React.我的简单app很棒,但现在我需要铁路由器.
应用布局:
client\
app.jsx
lib\
router.jsx
server
views\
home.jsx
layout.jsx
Run Code Online (Sandbox Code Playgroud)
home.jsx:
Home = React.createClass({
render() {
return (
<div>
<h3>Hello World</h3>
<p>from home</p>
</div>
);
}
});
Run Code Online (Sandbox Code Playgroud)
layout.jsx:
Layout = React.createClass({
render() {
return (
<div>
{this.props.children}
</div>
);
}
});
Run Code Online (Sandbox Code Playgroud)
routes.jsx:
Router.route('/', () => {
let page = (
<Layout>
<Home/>
</Layout>
);
React.render(page, document.body);
});
Run Code Online (Sandbox Code Playgroud)
当然,在我的app.jsx
工作中,它可以很好地显示在html的主体上,但是设置不适用于多页应用程序,因此需要路由.里面是:
Meteor.startup(() => {
let app = (
<Layout>
<Home/>
</Layout>
);
React.render(app, document.body);
});
Run Code Online (Sandbox Code Playgroud)
问题是,如何让铁路由器(routes.jsx
)显示内容?
ffx*_*sam 10
我强烈建议使用Flow Router而不是Iron Router.将Flow Router添加到您的应用程序,然后添加kadira:react-layout
.遵循这种格式,它应该工作:
FlowRouter.route('/', {
name: 'home',
action() {
ReactLayout.render(Layout, {content: <Home />});
}
});
FlowRouter.route('/login', {
name: 'loginPage',
action() {
ReactLayout.render(Layout, {content: <Login />});
}
});
Run Code Online (Sandbox Code Playgroud)
您的Layout
组件应如下所示:
Layout = React.createClass({
render() {
return (
<div>
<Header />
{this.props.content}
</div>
);
}
});
Run Code Online (Sandbox Code Playgroud)
要路由到带参数的页面:
FlowRouter.route('/detail/:id', {
name: 'prodDetail',
action() {
ReactLayout.render(Layout, {content: <ProdDetail />});
}
});
Run Code Online (Sandbox Code Playgroud)
然后在您的ProdDetail
组件中,您可以参考FlowRouter.getParam('id')
.查看完整的FlowRouter文档.
归档时间: |
|
查看次数: |
2586 次 |
最近记录: |