题:
在一个做出反应的事件处理程序,有没有方便的方式e.preventeDefault,并e.stopPropagation同时(你曾经是能够与方式return false)?
背景: React已经开始弃用以下内容:
return false;
Run Code Online (Sandbox Code Playgroud)
内部事件处理程序作为实现的一种手段:
e.preventDefault();
e.stopPropagation();
Run Code Online (Sandbox Code Playgroud)
这个GitHub问题解释了React团队正在尝试return false顺便解决事件回调问题(即没有意图阻止默认/停止传播).
这很有道理,我理解它背后的逻辑,但......
e.preventDefault();
e.stopPropagation();
Run Code Online (Sandbox Code Playgroud)
比起来更难以记忆和写作return false.
所以,我的问题是:有没有方便的方法来获取return falseReact事件处理程序内的功能?例如,是否有某种e.stopBoth()方法,或return React.PREVENT常量,或任何其他方式来获得旧return false功能?
或者,如果没有,有没有办法猴子补丁这样的功能?
Col*_*say 10
没有一种确定的方法可以做到这一点,仅仅因为它不是React团队似乎想要鼓励的行为.有人猜测来自处理程序的返回值可能会在未来以其他方式使用,但这对我来说听起来很麻烦且反直觉.
无论如何,我们可以:
a)深入研究这些SyntheticEvent东西,但是重写/扩充React内部听起来像是一个非常糟糕的主意.SyntheticEvent让React规范化事件处理.
b)为此创建一个简单的辅助函数(hattip @octref):
// 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);
}
});
Run Code Online (Sandbox Code Playgroud)
确切的实现取决于您正在使用的模块系统,但希望您能得到这个想法.我认为这是最好的方法,因为它非常简单,易于操作,并且表达了你想要做的非常清楚的事情.
| 归档时间: |
|
| 查看次数: |
5240 次 |
| 最近记录: |