用React中的自定义组件模拟实现Vue-router中tag功能

  我们在使用react-router-dom时,跳转链接的<List>会转换成<a>标签。由于<a>标签会破坏我们的布局,所以今天我用React中的自定义组件实现一个类似Vue中路由跳转中tag的功能,保留我们本来的标签。

  本篇文章涉及到的知识点包括:高阶组件withRouter,和Route组件的属性children。

Route方法实现过程如下:

class MyList extends Component{
    render(){
        return(
            <Route children={({match,history,location})=>{
                return (
                    <li onClick={this.jump.bind(this,history,this.props.to)}>
                        {location.pathname===this.props.to ? '>'+this.props.children:this.props.children}
                    </li>
                )
            }}>
            </Route>           
        )
    }
    jump(history,to){
        history.push(to)
    }
} 

 withRouter实现过程如下

const MyList = withRouter(
    class EnhenceList extends Component{
        render(){
            return(
                <li onClick={this.jump.bind(this)}>
                    {this.props.location.pathname===this.props.to ? '>'+this.props.children:this.props.children}
                </li>
            )
        }
        jump(){
            this.props.history.push(this.props.to)
        }
    }
) 

  

 

 

posted @ 2018-11-16 21:57  如常  阅读(626)  评论(0编辑  收藏  举报