react中link组件和传统a链接的区别

本文探讨了React中Link组件与传统a标签在路由处理上的差异。Link组件通过内部处理点击事件,防止a标签的默认行为,如页面刷新。它会阻止a标签的默认跳转,而是使用history API来改变URL,实现页面无刷新切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

react路由的实现的a标签跟原生的a标签有什么区别

区别就是:link对这个a标签进行特殊的处理,绑定了自己的点击跳转视图的函数

先看Link点击事件handleClick部分源码

if (_this.props.onClick) _this.props.onClick(event);

if (!event.defaultPrevented && // onClick prevented default
    event.button === 0 && // ignore everything but left clicks
    !_this.props.target && // let browser handle "target=_blank" etc.
    !isModifiedEvent(event) // ignore clicks with modifier keys
) {
    event.preventDefault();

    var history = _this.context.router.history;
    var _this$props = _this.props,
        replace = _this$props.replace,
        to = _this$props.to;


    if (replace) {
        history.replace(to);
    } else {
        history.push(to);
    }
}

Link做了3件事情:

  • 有onclick那就执行onclick
  • click的时候阻止a标签默认事件(这样子点击< a href=" ">123</ a>就不会跳转和刷新页面)
  • 取得跳转href(即是to),用history(前端路由两种方式之一,history & hash)跳转,此时只是链接变了,并没有刷新页面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值