react-router-dom示例讲解(七)——路径递归

前言:

该例子涉及到的知识点并没有新增(看过之前的例子的前提),只是它逻辑理解起来可能会费点劲。我们先看效果图及代码然后在对它进行分析。

实现效果:

代码如下:

const persons = [
  { id: 0, name: 'Michelle', friends: [1, 2, 3] },
  { id: 1, name: 'Sean', friends: [0, 3] },
  { id: 2, name: 'Kim', friends: [0, 1, 3], },
  { id: 3, name: 'David', friends: [1, 2] }
];

const find = (id) => persons.find(p => p.id == id); 

class App extends Component {
  render() {
    return (
      <div className="App">
        <Router>
          <Person match={{params:{id: 0}, url: ''}}/>
        </Router>
      </div>
    );
  }
}

class Person extends Component{
  render() {
    var person = find(this.props.match.params.id);
    return (
      <div>
        <h3>
          {person.name}‘s Friends
        </h3>
        <ul>
          {
            person.friends.map(id => {
              return <li key={id} >
                <Link to={`${this.props.match.url}/${id}`}>
                  {find(id).name}
                </Link>
              </li>
            })
          }
        </ul>
        <Route path={`${this.props.match.url}/:id`} component={Person}/>
      </div>
    )
  }
}

例子中路径递归的核心在于Person组件,该组件本身便是一个是路由,但该路由的Route(视图)对应的组件又是自身,从而实现了路径递归,即自己调用自己。

 例子中用到了find函数,这是es6的数组方法,用于找出第一个符合条件的数组成员。

倘若你还不理解请参考我的github上的这个示例:https://github.com/guoqin721/react-router-dom7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值