You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Link包裹的子按钮不触发父级路由,执行独立功能?

实现方法:阻止按钮事件冒泡

当然可行,你只需要在按钮的点击事件里阻止事件冒泡,就能让按钮执行自定义逻辑而不触发外层Link的路由跳转,同时保留卡片其他区域的跳转功能。

修改后的代码如下:

<Link to={`/shop/${book.id}`}>
    <div className='book-card'>
        <img src={book.image} alt="" />
        <h3>{book.title}</h3>
        <div>
            <p>Rating :{book.rating}</p>
            <p>${book.price}</p>
        </div>
        <button onClick={(e)=> {
            e.stopPropagation(); // 阻止事件冒泡
            console.log('Clicked');
        }}>Add To Cart</button>
    </div>
</Link>

原理说明

React Router的Link组件是通过监听父元素的点击事件来触发路由跳转的。当点击按钮时,默认情况下点击事件会向上冒泡到外层的Link组件,导致跳转。而e.stopPropagation()会终止事件的传播,让事件停在按钮这一层,这样Link就不会接收到点击事件,自然不会触发跳转,同时按钮的自定义逻辑可以正常执行。

内容的提问来源于stack exchange,提问作者Hamdan Salih

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 14:05:23