使用 Ant Design UI 库禁用 <a> 标签

Disabling <a> tag using Ant Design UI Library

有没有办法使用 antd UI 库禁用 link?根据 MDN disabled 属性不受 a 标签支持。以下实施在使用 React 时确实有效,但在使用 Next.js 时 link 仍然可点击。

<Tooltip title={tooltip}>
 <a onClick={handleAddToCart} disabled={quantity < 1}>
   <ShoppingCartOutlined className="text-danger" /> <br />
   {quantity < 1 ? 'Out of stock' : 'Add to Cart'}
 </a>
</Tooltip>

disabled 确实不是 link 上的属性,因为禁用的 link 只是文本。

如果您仍然想要一个残障人士 link 那么您必须做两件事

  • 在禁用时删除 onClick 处理程序(或让 handleAddToCart 不执行任何操作)
  • 然后以“禁用”方式设置您的组件的样式。

这是一个例子

const isOutOfStock = quantity < 1;

return (
  <Tooltip title={tooltip}>
   <a onClick={isOutOfStock ? null : handleAddToCart} className={isOutOfStock ? 'isDisabled' : ''}>
     <ShoppingCartOutlined className="text-danger" /> <br />
     {isOutOfStock ? 'Out of stock' : 'Add to Cart'}
   </a>
  </Tooltip>
)

那么你的残障人士css可以看起来像这样

.isDisabled {
  pointer-events: none; // disabled click & hover
  opacity: 0.6; // make it a bit opaque
}

或者,由于您使用的是 Ant Design,您可以利用 Typography 中的 Link 组件并添加 disabled 道具。无需编写自定义 CSS.

import { Typography } from 'antd'

<Typography.Link href="https://ant.design" disabled>disabled link<Typography.Link>