相关疑难解决方法(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万
查看次数

为什么我的onClick被调用渲染? - React.js

我有一个我创建的组件:

class Create extends Component {
  constructor(props) {
    super(props);
  }

  render() {
    var playlistDOM = this.renderPlaylists(this.props.playlists);
    return (
      <div>
        {playlistDOM}
      </div>
    )
  }

  activatePlaylist(playlistId) {
    debugger;
  }

  renderPlaylists(playlists) {
    return playlists.map(playlist => {
      return <div key={playlist.playlist_id} onClick={this.activatePlaylist(playlist.playlist_id)}>{playlist.playlist_name}</div>
    });
  }
}

function mapStateToProps(state) {
  return {
    playlists: state.playlists
  }
}

export default connect(mapStateToProps)(Create);
Run Code Online (Sandbox Code Playgroud)

当我render这个页面时,我的activatePlaylist每一个都被称为.如果我喜欢:playlistmapbind activatePlaylist

activatePlaylist.bind(this, playlist.playlist_id)
Run Code Online (Sandbox Code Playgroud)

我也可以使用匿名函数:

onClick={() => this.activatePlaylist(playlist.playlist_id)}
Run Code Online (Sandbox Code Playgroud)

然后它按预期工作.为什么会这样?

javascript reactjs redux

81
推荐指数
2
解决办法
4万
查看次数

标签 统计

javascript ×2

reactjs ×2

jquery ×1

redux ×1