Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当涉及到reactjs时,preventDefault vs return false_Javascript_Reactjs - Fatal编程技术网

Javascript 当涉及到reactjs时,preventDefault vs return false

Javascript 当涉及到reactjs时,preventDefault vs return false,javascript,reactjs,Javascript,Reactjs,我今天开始学习Reactjs,发现了一个有趣的事实(我找不到任何相关主题),即我们必须使用preventDefault而不是使用returnfalse语句来防止默认行为: 但据我所知,returnfalse相当于(从jQuery后台): 但我很想知道react是如何实现的,这样我们就不能使用returnfalse语句,我们必须使用preventDefault来防止默认行为 那么,当涉及到reactjs时,preventDefault和returnfalse之间到底有什么区别呢?为什么reactj

我今天开始学习Reactjs,发现了一个有趣的事实(我找不到任何相关主题),即我们必须使用
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