美文网首页
react 自定义Link

react 自定义Link

作者: Veycn | 来源:发表于2019-03-17 17:54 被阅读0次
image.png
在这个导航里面, 没有使用NavLink, 使用的是自定义的MenuLink.
MenuLink其实就就是一个函数, 返回并导出了一个Route, 只是根据对react某些特性的合理使用, 就成了自定义的Link了.
const MenuLink = ({to, ...props}) => {
    return (
        <Route path={to} {...props} children={(p) => {
            return <span onClick={()=> p.history.push(to)}
                         className={p.match ? 'active' : ''}
            >{ props.children }</span>
        }}/>
    )
}

{to, ...props} 解构赋值, 多次调用了MenuLink这个组件, 所以如果我们打印一下to的话, 会出现四个(因为被调用了四次)路径, 分别是/, /activities, /topic, /login, 所以在这里把每一个to绑定在返回的Route上.

{...props}: 将在调用MenuLink的时候绑定的所有props, 原封不动的放到返回的Route上.

children: 是react-router上的第三个可以用来渲染东西的方法, 路由相关的props, 即(history, location, match)都会被当做参数传递给这个方法. 在里面调用.

p.match ? 'active' : '': 如果匹配上的路由, 添加active样式类. 注意, 在这里打印 p.match 的话是没有结果的, 结果是null

相关文章

网友评论

      本文标题:react 自定义Link

      本文链接:https://www.haomeiwen.com/subject/nviumqtx.html