Javascript 当涉及到reactjs时,preventDefault vs return false
我今天开始学习Reactjs,发现了一个有趣的事实(我找不到任何相关主题),即我们必须使用Javascript 当涉及到reactjs时,preventDefault vs return false,javascript,reactjs,Javascript,Reactjs,我今天开始学习Reactjs,发现了一个有趣的事实(我找不到任何相关主题),即我们必须使用preventDefault而不是使用returnfalse语句来防止默认行为: 但据我所知,returnfalse相当于(从jQuery后台): 但我很想知道react是如何实现的,这样我们就不能使用returnfalse语句,我们必须使用preventDefault来防止默认行为 那么,当涉及到reactjs时,preventDefault和returnfalse之间到底有什么区别呢?为什么reactj
preventDefault
而不是使用returnfalse
语句来防止默认行为:
但据我所知,returnfalse相当于(从jQuery后台):
但我很想知道react是如何实现的,这样我们就不能使用returnfalse
语句,我们必须使用preventDefault
来防止默认行为
那么,当涉及到reactjs时,
preventDefault
和returnfalse
之间到底有什么区别呢?为什么reactjs中的preventDefault
比return false
更健壮?react中的事件不是浏览器的本机事件,它们是为方便起见而包装的
您的事件处理程序将被传递给SyntheticEvent的实例
围绕浏览器的本机事件的跨浏览器包装。它有
与浏览器的本机事件相同的界面,包括
stopPropagation()和preventDefault(),但事件除外
在所有浏览器中都是相同的
因此,当您执行preventDefault时,您不是直接调用本机事件的方法,而是由react负责
因此,returning false是将false返回到reacts事件,而不是原生事件,这意味着,它实际上没有做任何事情…在DOM中调用
return false
时,它有一些“神奇”的行为,是隐式的,而不是显式的。在React中注册事件回调时,没有在DOM中显式设置事件处理程序,因为React是对DOM的抽象。React元素是“虚拟DOM”的一部分,您不再直接使用DOM,因此事件处理程序在组件处理程序和DOM元素本身之间具有抽象层
可能React以返回false的方式实现了他们的API代码>镜像此隐式行为?可能但他们有自己的API,显然选择了不这样做
下面是当您返回false
时DOM如何处理事情的示例 实际使用事件处理程序中的返回false
,以防止自React 0.12以来的默认行为
因此,这不是最可靠的选择,您不能在React
中为此使用returnfalse
您必须明确地调用事件preventDefault
。感谢您的回答。我仍然需要深入了解react,这样我才能知道一切实际上是如何工作的。。。
// e.preventDefault();
// e.stopPropagation();
// stop function execution after return false
// stops the callback function