如何在React中禁用链接?

目录
文章目录隐藏
  1. 禁用 React 中的链接
  2. 通过呈现不同的元素禁用链接
  3. 使用 event.preventDefault 禁用链接
  4. 将内联样式添加到“禁用”链接
  5. 结语

禁用 React 中的链接

将指针事件 CSS 属性设置为 none 以禁用 React 中的链接。

当链接的指针事件属性设置为 none 时,链接将被禁用。

import {useState} from 'react';
import {BrowserRouter as Router, Link} from 'react-router-dom';

export default function App() {
  const [count, setCount] = useState(0);

  return (
    <Router>
      <div>
        <Link style={{pointerEvents: count === 0 ? '' : 'none'}} to="/">
          Home
        </Link>

        <br />
        <br />

        <button onClick={() => setCount(count + 1)}>Increment</button>
      </div>
    </Router>
  );
}

效果如下:

禁用 React 中的链接

当用户单击按钮时,链接元素的指针事件属性设置为 none,并且链接被禁用。

当然我们也可以使用相同的方法禁用锚点元素,因为在底层,链接组件实际上只是一个<a>标记。

该示例使用了一个三元运算符,它与 if/else 语句非常相似。

如果问号左侧的值为 true,则运算符将返回冒号左侧的值,否则将返回冒号右侧的值。

通过呈现不同的元素禁用链接

禁用链接的另一种方法是,如果满足条件,则简单地呈现不同的元素而不是链接。

import {useState} from 'react';
import {BrowserRouter as Router, Link} from 'react-router-dom';

export default function App() {
  const [count, setCount] = useState(0);

  return (
    <Router>
      <div>
        {count === 0 ? (
          <Link to="/">
            Home
          </Link>
        ) : (
          <span>Home</span>
        )}

        <br />
        <br />

        <button onClick={() => setCount(count + 1)}>Increment</button>
      </div>
    </Router>
  );
}

效果如下:

react 禁用链接

这一次,如果满足某个条件,我们将呈现一个 span 元素,而不是链接。

这不一定是一个 span,它可以是适合您的用例的任何其他元素。

本例还使用了三元运算符——如果 count 变量等于 0,则呈现链接,否则呈现 span 标记。

使用 event.preventDefault 禁用链接

或者,您可以通过向元素添加 onClick 道具并在事件对象上调用 preventDefault()方法来禁用链接。

import {useState} from 'react';
import {BrowserRouter as Router, Link} from 'react-router-dom';

export default function App() {
  const [count, setCount] = useState(0);

  return (
    <Router>
      <div>
        {count === 0 ? (
          <Link to="/about">About</Link>
        ) : (
          <Link to="/about" onClick={event => event.preventDefault()}>
            About
          </Link>
        )}

        <br />
        <br />

        <button onClick={() => setCount(count + 1)}>Increment</button>
      </div>
    </Router>
  );
}

效果如下:

使用 event.preventDefault 禁用链接

我们在第二个 Link 元素中添加了一个 onClick 事件处理程序。

事件对象上的 preventDefault 方法告诉浏览器不应执行其默认操作。

单击链接时的默认操作是导航到其他页面。通过调用preventDefault(),链接被禁用。

将内联样式添加到“禁用”链接

您可以向这两个链接添加内联样式,以便用户更容易地了解链接何时被禁用以及何时处于活动状态。

import {useState} from 'react';
import {BrowserRouter as Router, Link} from 'react-router-dom';

export default function App() {
  const [count, setCount] = useState(0);

  return (
    <Router>
      <div>
        {count === 0 ? (
          <Link to="/about">About</Link>
        ) : (
          <Link
            style={{pointerEvents: 'none', textDecoration: 'none'}}
            to="/about"
            onClick={event => event.preventDefault()}
          >
            About
          </Link>
        )}

        <br />
        <br />

        <button onClick={() => setCount(count + 1)}>Increment</button>
      </div>
    </Router>
  );
}

效果如下:

将内联样式添加到“禁用”链接

结语

以上就是关于如何在 React 中禁用链接的实现方法,希望对大家有用。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 如何在React中禁用链接?

发表回复