a标签和link的区别

本文已参与「新人创作礼」活动,一起开启掘金创作之路

a标签和link区别

a标签是跳转一个新的页面,有请求刷新动作
link是vue,react自带的组件,封装好的,无请求和刷新动作
就是我们常说的单页面应用

结论

需要跳新的页面用a标签,或原生js
不需要新页面,用link组件,无刷新,用户体验和性能都好

实践案例

window.location.href="http://www.baidu.com" 

window.open("http://www.baidu.com")

window.history.back(-1);

self.location.href="baidu.com"

react通用封装

   //最主要的就是过滤,分开link是不是跳新的页面
      const Link = (props) => {
        const {
          href = "",
          color = "inherit",
          className,
          refresh,
          onClick,
          propsRef,
          style,
          ...otherProps
        } = props;

        //过滤js
        if (href === "" || href === "none" || /^javascript:/.exec(href)) {
          <a
            className={className}
            style={{ ...style }}
            {...otherProps}
            ref={(el) => (propsRef = el)}
            onClick={(e) => {
              e.preventDefault();
              onClick?.(e);
            }}
          />;
        }

        ///开头就是当前页面跳转
        if (/^\/[^/]/.exec(href) && !refresh) {
          return (
            <Link
              {...otherProps}
              to={href}
              ref={(el) => (propsRef = el)}
              onClick={onClick}
              className={className}
            />
          );
        }

        //最后一种就是普通a 标签+ href
        return (
          <a
            {...otherProps}
            href={href}
            ref={(el) => (propsRef = el)}
            className={className}
          />
        );
      };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值