next.js 如果我点击链接的内部元素,如何阻止链接的触发?

vfhzx4xs  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(118)

我有一个位于“a”标签(在next.js中为Link)中的div,其中还有一个“like”div。如果我点击div中的任何地方,我希望它带我去“a”标记所指向的地方。然而,如果我点击“喜欢”div,我不希望它带我去任何地方;相反,我希望触发一个JavaScript脚本。
如何做到这一点?还有别的办法吗它应该如何看起来既实用又SEO友好?
在Twitter上,有类似的东西:整个“tweet”都是可以点击的,可以把你带到另一个页面,而像“like”这样的按钮则可以正常工作,这就是我想要达到的效果。

'use client'
import React from 'react'

interface LikeTypes {
    likes:number
}

function LikeCard({likes}:LikeTypes ) {

    const likeButtonClicked= () => {

      };
    

  return (
    <div className='flex justify-center items-center ' onClick={(e) => { e.nativeEvent.stopImmediatePropagation(); likeButtonClicked(); }}>❤ {likes}</div>
  )
}

export default LikeCard

我试过使用e.nativeEvent.stopImmediatePropagation();,但不工作。
LikeCard外部组件包裹的一部分

<Link href={href}>
                  <LikeCard likes={likes}/>
    </Link>
kognpnkq

kognpnkq1#

preventDefault应该可以工作

document.querySelector('button').addEventListener('click', e => {
  e.preventDefault()
})
<a href="https://stackoverflow.com">
  Post: <button>Like</button>
</a>
ekqde3dh

ekqde3dh2#

您可以在这里使用两种方法之一。
1.将事件对象传递给事件处理程序。
public void run(){

event.preventDefault();

}
这是停止浏览器的默认行为。
1.其次,href="javascript:void(0)"

相关问题