react withRouter

高阶组件中的withRouter, 作用是将一个组件包裹进Route里面, 然后react-router的三个对象history, location, match就会被放进这个组件的props属性中.

 

// withRouter实现原理: 
// 将组件包裹进 Route, 然后返回
// const withRouter = () => {
//     return () => {
//         return 
//     }
// }

// 这里是简化版
const withRouter = ( Component ) => () => 

上面是实现的原理, react-router-dom 里面是有这个组件的, 直接引入使用就可以了

 

import React from 'react'
import './nav.css'
import {
    NavLink,
    withRouter
} from "react-router-dom"

class Nav extends React.Component{
    handleClick = () => {
        // Route 的 三个对象将会被放进来, 对象里面的方法可以被调用
        console.log(this.props);
    }
    render() {
        return (
            
掘土社区
  • 首页
  • 动态
  • 话题
  • 登录
  • ); } } // 导出的是 withRouter(Nav) 函数执行 export default withRouter(Nav)

    所以withRouter的作用就是, 如果我们某个东西不是一个Router, 但是我们要依靠它去跳转一个页面, 比如点击页面的logo, 返回首页, 这时候就可以使用withRouter来做.
    在这个例子中, 我将span使用withRouter作为一个可点击跳转的Link



    作者:Veycn
    链接:https://www.jianshu.com/p/8d3cf411a639
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    你可能感兴趣的:(react withRouter)