React:有关a标签控制台警告的一些问题

近几日在写react项目的时候,发现了一些问题,特此记录!

目录

1.控制台警告信息,由target="_blank"引起的问题

2.由href=""引起的问题


1.控制台警告信息,由target="_blank"引起的问题

 Using target="_blank" without rel="noreferrer" (which implies rel="noopener") is a security risk in older browsers: see https://mathiasbynens.github.io/rel-noopener/#recommendations  react/jsx-no-target-blank

该警告是由下面示例代码引起的

function Test() {
    return (
        <div>
            <a target="_blank" href='https://www.baidu.com/'>百度</a>
        </div>
    )
}

export default Test

我们都知道,当在a标签中使用 target="_blank" 的作用,在新的窗口打开链接,这里顺便做一个有关target的复习:

_blank在新窗口中打开链接
_parent在父窗体中打开链接
_top在当前窗体打开链接,并替换当前的整个窗体(框架页)
_self在当前窗体打开链接(默认值)

解决办法:

在a标签中添加rel="noopener noreferrer"

<a target="_blank" href='https://www.baidu.com/' rel='noopener noreferrer'>百度</a>

解释说明:在不使用rel这段代码的时候,使用target='_blank'认为是一个安全漏洞,新的页面可以通过window.opener访问您的窗口对象,从而可以使用window.opener.location = newURL将您的页面导航至不同的网址,也就是说我可以控制你页面的去向,所以不安全,发出警告。。。当我们使用了rel = 'noopener noreferrer'后,我们通过window.opener就会得到一个null,无计可施了吧0.0

谷歌解释,当然需要用科学上网的方式,当然我也截了个长图,嘿嘿

2.由href=""引起的问题

The href attribute requires a valid value to be accessible. Provide a valid, navigable address as the href value. If you cannot provide a valid href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/docs/rules/anchor-is-valid.md  jsx-a11y/anchor-is-valid

该警告信息是由下面代码引起的

function Test() {
    const click = () => {
        console.log(123)
    }

    return (
        <div>
            <a onClick={() => click()}>百度</a>
        </div>
    )
}

export default Test

其实,我的本意很简单,就是a标签单纯的一个点击事件,但是吧,控制非得给我报这么一大段警告错误,简单来说就是它要求你必须提供一个有效的href属性。。。

所以,那我们就加上一个href属性,经过一段的测试,貌似发现只有 href = "#!" 可正常使用,浏览器控制台和命令行方才都正常。。。

<a href="#!" onClick={() => click()}>百度</a>

当然还有一个解决办法,我们把这个检测的插件给它关闭了,如下写法,找到项目的package.json文件,给它关闭了就好。

  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ],
    "rules": {
      "jsx-a11y/anchor-is-valid": "off"
    }
  },

这样,我们依然采用上方的写法不改即可。。。那么我们来看看官方是怎么解释的吧,为什么采用我们去提供一个有效的href属性

github:官方解释 ,无法进入的话,gitee上也有 gitee:官方解释,当然全部是英文的,我就直接一键翻译,可以依稀看到解释。

嗯,就是这样。。。 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jay丶萧邦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值