Events React.js:Can';";返回false";不再有等效的吗?

Events React.js:Can';";返回false";不再有等效的吗?,events,reactjs,Events,Reactjs,问题: 在React事件处理程序中,是否有一种方便的方法可以同时执行e.preventedfault和e.stopPropagation(您过去使用返回false的方法) 背景: React已开始禁止使用: return false; 内部事件处理程序作为实现以下目标的一种手段: e.preventDefault(); e.stopPropagation(); 解释React团队正试图解决事件回调的问题,该问题附带返回false(即无意防止默认/停止转发) 这很有道理,我理解背后的逻辑,但是

问题:

在React事件处理程序中,是否有一种方便的方法可以同时执行
e.preventedfault
e.stopPropagation
(您过去使用
返回false的方法)

背景: React已开始禁止使用:

return false;
内部事件处理程序作为实现以下目标的一种手段:

e.preventDefault();
e.stopPropagation();
解释React团队正试图解决事件回调的问题,该问题附带返回false(即无意防止默认/停止转发)

这很有道理,我理解背后的逻辑,但是

e.preventDefault();
e.stopPropagation();
return false
更难记忆和编写

所以,我的问题是:在React事件处理程序中有没有方便的方法来获取
returnfalse
功能?例如,是否有某种
e.stoppeath()
方法,或
返回React.PREVENT
常量,或任何其他方法来获取旧的
返回false
功能


或者,如果没有,是否有任何方法可以在中对这样的功能进行修补?

没有一种明确的方法可以做到这一点,因为React团队似乎不想鼓励这种行为。有人猜测,处理程序返回的值将来可能会以其他方式使用,但这听起来很混乱,而且违反了我的直觉

无论如何,出于我们的目的,您可以:

a) 侵入,但覆盖/增强React内部听起来是个非常糟糕的主意<代码>合成事件
让React规范化事件处理

b) 只需为此创建一个简单的帮助函数(hattip@octref):


具体的实现将取决于您使用的模块系统,但希望您能理解。我认为这是最好的方法,因为它非常简单,易于操作,并且非常清楚地表达了您正在尝试执行的操作。

我已经看到过很多次代码基无知地使用return false,以至于我认为为了方便起见尝试这样做是一个好主意,而且您发现自己停止传播的频率有多高?此外,您还可以在开始时编写func调用,这是一种更好的做法,因为如果单击处理程序中存在异常,在默认处理程序将您移到另一个链接之前,您将看不到该异常,如果您在底部返回,我并不经常依赖stopPropagation,但因为我总是使用它(通过
返回false
)我避免了某类问题。假设我有一个带有点击处理程序的
。如果我在
中添加了一个按钮,并且我没有将
停止播放作为一种习惯,那么当我忘记这样做并单击该按钮时,它将触发家长的处理程序,从而导致错误。习惯性地在所有处理程序中使用
stopPropagation
,这意味着在添加按钮(或任何组件)时,我甚至不必考虑父元素上的处理程序。我也希望在制作反应组件时不必思考。虽然习惯性地使用
返回false
有一个明显的好处(不必思考),但这并没有成本:如果我真的希望某个元素的点击在某些特定情况下“冒泡”的话,那么,在这种情况下,我所要做的就是不返回false。您不能扩展事件原型以将两者结合起来吗?很好的问题:我可以吗?我很抱歉,但我还没有反应过来,所以我甚至不知道该怎么做。是不是
React.Event.prototype.MyNewReturnFalsReplacement=function(){…
?这是否正确,如果你能以答案的形式给出回答,我很乐意接受。
// In some killEvent.js
module.exports = function(event) {
    e.preventDefault();
    e.stopPropagation();
}


// In some component file
var killEvent = require('./killEvent');

var Component = React.createClass({
    ... component implementation

    myEventHandler = function(e) {
        killEvent(e);
    }
});