react-router 使用

以前写了页面引用的两个版本写法。

以下是node 写法:

var React =require('react');
var ReactDom=require('react-dom');
import { Router, Route, IndexRoute, Link, IndexLink, hashHistory } from 'react-router';



var About = React.createClass({
  render: function () {
    return (
    	<div>
    		<h2>About</h2>
    		参数props.location.query.name={this.props.location.query.name}
    	</div>
    );
  }
});

var Inbox = React.createClass({
  render: function () {
    return (
    	<div>
    		<h2>Inbox</h2>
    		参数:id={this.props.params.id}<br/>
        {this.props.todo.map(function(item){
          return (
              <p key={item.id}>{item.name} {item.id}</p>
            );
        })}    		
    	</div>
    );
  }
});

var App = React.createClass({
	getInitialState:function(){
		return {
			todos:[
				{id:1,name:'aa'},
				{id:2,name:'bb'},
				{id:3,name:'cc'}
			]
		}
	},
  render: function () {
    return (
    	<div>
    		<h2>App</h2>
    		<Link to="/"  activeClassName="active">/</Link><br/>
    		<Link to={{pathname:'about',query:{name:'about'}}}  activeClassName="active">about</Link><br/>
    		<Link to="inbox/2"   activeClassName="active">inbox</Link><br/>
    		{this.props.children && React.cloneElement(this.props.children, {
            	todo: this.state.todos
          	})}	          	
    	</div>    	
    );
  }
});
class Index extends React.Component {
  render() {
    return (
      <div>
        <h2>Index!</h2>
      </div>
    )
  }
}

//使用hashHistory了
ReactDom.render(
	<Router  history={hashHistory} >
		<Route path="/" component={App} >
			<IndexRoute component={Index}/>
		    <Route path="about" component={About}/>
		    <Route path="inbox/:id" component={Inbox}/>
		</Route>
	</Router>,
	document.querySelector('#app')
)

基础没有什么变化 。

嵌套组件传递数据可以用以下:

{this.props.children && React.cloneElement(this.props.children, {
            todo: this.state.todos
        })}

以前父组件只是输出children现在用了cloneEjement可以传递props了。

对于项目,可以定义好路由规则。通过:id,query传递参数。组件内接收到再获取数据。

路由组件当前一个个功能模块,在组件内可以使用其他的子组件,这样就可以使用props了。

而对于有些子父需要传递props可以用以上的方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值