小编典典

反应onClick和preventDefault()链接刷新/重定向?

reactjs

我正在渲染一个带有react的链接:

render: ->
  `<a className="upvotes" onClick={this.upvote}>upvote</a>`

然后,上面有upvote函数:

upvote: ->
  // do stuff (ajax)

在链接建立之前,我已经跨过那个地方,但是我需要切换到链接,这就是麻烦了-每次我.upvotes刷新页面时,到目前为止,我已经尝试过以下操作:

event.preventDefault()-不起作用。

upvote: (e) ->
  e.preventDefault()
  // do stuff (ajax)

event.stopPropagation()-不起作用。

upvote: (e) ->
  e.stopPropagation()
  // do stuff (ajax)

返回false-不起作用。

upvote: (e) ->
  // do stuff (ajax)
  return false

我还在index.html中使用jQuery尝试了上述所有方法,但似乎没有任何效果。我在这里应该做什么,我做错了什么?我已经检查了event.type,click因此我想应该可以避免以某种方式重定向?

对不起,我是React的新秀。

谢谢!


阅读 332

收藏
2020-07-22

共1个答案

小编典典

React事件实际上是合成事件,而不是本机事件。就像这里写的:

事件委托:React实际上并未将事件处理程序附加到节点本身。当React启动时,它开始使用单个事件监听器在顶层监听所有事件。在安装或卸载组件时,只需简单地在内部映射中添加或删除事件处理程序即可。当事件发生时,React知道如何使用此映射进行调度。当映射中没有事件处理程序时,React的事件处理程序就是简单的无操作。

尝试使用Use Event.stopImmediatePropagation

upvote: (e) ->
  e.stopPropagation();
  e.nativeEvent.stopImmediatePropagation();
2020-07-22