相关疑难解决方法(0)

ReactJS SyntheticEvent stopPropagation()仅适用于React事件?

我正在尝试在ReactJS组件中使用event.stopPropagation()来阻止点击事件冒泡并触发遗留代码中使用JQuery附加的单击事件,但似乎React的stopPropagation()仅停止传播到事件也附加在React中,而JQuery的stopPropagation()不会停止传播到React附带的事件.

有没有办法让stopPropagation()在这些事件中发挥作用?我写了一个简单的JSFiddle来演示这些行为:

http://jsfiddle.net/7LEDT/3/

/** @jsx React.DOM */
var Propagation = React.createClass({
    alert: function(){
        alert('React Alert');
    },
    stopPropagation: function(e){
        e.stopPropagation();
    },
    render: function(){
        return (
            <div>
                <div onClick={this.alert}>
                    <a href="#" onClick={this.stopPropagation}>React Stop Propagation on React Event</a>
                </div>
                <div className="alert">
                    <a href="#" onClick={this.stopPropagation}>React Stop Propagation on JQuery Event</a>
                </div>
                <div onClick={this.alert}>
                    <a href="#" className="stop-propagation">JQuery Stop Propagation on React Event</a>
                </div>
                <div className="alert">
                    <a href="#" className="stop-propagation">JQuery Stop Propagation on JQuery Event</a>
                </div>
            </div>
        );
    }
});

React.renderComponent(<Propagation />, document.body);

$(function(){    
    $(document).on('click', '.alert', function(e){ …
Run Code Online (Sandbox Code Playgroud)

javascript jquery reactjs

112
推荐指数
7
解决办法
9万
查看次数

单击时,React会阻止嵌套组件中的事件冒泡

这是一个基本组件.无论是<ul><li>拥有的onClick功能.我只想点击on on <li>,而不是<ul>.我怎样才能做到这一点?

我打得四处e.preventDefault(),e.​​stopPropagation(),但没有成功.

class List extends React.Component {
  constructor(props) {
    super(props);
  }

  handleClick() {
    // do something
  }

  render() {

    return (
      <ul 
        onClick={(e) => {
          console.log('parent');
          this.handleClick();
        }}
      >
        <li 
          onClick={(e) => {
            console.log('child');
            // prevent default? prevent propagation?
            this.handleClick();
          }}
        >
        </li>       
      </ul>
    )
  }
}

// => parent
// => child
Run Code Online (Sandbox Code Playgroud)

onclick event-propagation reactjs

85
推荐指数
6
解决办法
6万
查看次数

理解React的综合事件系统

现在已经有几天了.

根据文档,React有一个合成事件系统,它是一个a cross-browser wrapper around the browser's native event.通过文档,我的理解是正确的,自定义(合成)事件系统,不是效率,而是跨浏览器兼容性.

换句话说,React仍然将事件附加到元素而不是父元素上更有效的事件委派方法?

我在Firefox Inspector中也注意到了这一点,这引起了最初的好奇心.

提出问题的原因是我正在开发一个应用程序,用户可能会选择一千个元素并将它们拖动到屏幕上,因此最终会出现事件委托.

javascript events dom event-handling reactjs

10
推荐指数
1
解决办法
814
查看次数