我正在渲染一个带有react的链接:
render: -> `<a className="upvotes" onClick={this.upvote}>upvote</a>`
然后,上面有upvote函数:
upvote: -> // do stuff (ajax)
在链接建立之前,我已经跨过那个地方,但是我需要切换到链接,这就是麻烦了-每次我.upvotes刷新页面时,到目前为止,我已经尝试过以下操作:
.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因此我想应该可以避免以某种方式重定向?
click
对不起,我是React的新秀。
谢谢!
React事件实际上是合成事件,而不是本机事件。就像这里写的:
事件委托:React实际上并未将事件处理程序附加到节点本身。当React启动时,它开始使用单个事件监听器在顶层监听所有事件。在安装或卸载组件时,只需简单地在内部映射中添加或删除事件处理程序即可。当事件发生时,React知道如何使用此映射进行调度。当映射中没有事件处理程序时,React的事件处理程序就是简单的无操作。
尝试使用Use Event.stopImmediatePropagation:
Event.stopImmediatePropagation
upvote: (e) -> e.stopPropagation(); e.nativeEvent.stopImmediatePropagation();