响应中的单个按钮上的两个事件

时间:2017-01-16 13:16:42

标签: javascript reactjs javascript-events

我正在尝试创建一个按钮,它可以在一个按钮上有2个事件,这样我就可以添加和删除一个标记,我可以用jquery来完成但是无法在反应中解决它。

var Button = React.createClass({
    getInitialState() {
        return {
           name: 'add marker'
        };
    },
    render: function() {
        return <button type="button" onClick={this.onClick}>{this.state.name}</button>
    },

    onClick: function(ev) {
    // event 1
        alert('marker added');

    // event 2
        alert('remove marker');
        this.setState({name:'markert removed'})
    }
});

http://jsfiddle.net/zidski/5z3f7zL4/1/

2 个答案:

答案 0 :(得分:1)

假设您想使用相同的按钮添加/删除标记,那么您可以执行以下操作:

var Button = React.createClass({
    getInitialState() {
      return {
        marker: false
      };
    },
    onClick: function() {
        this.setState({
            marker: !this.state.marker
        });
    },
    render: function() {
      return <button type="button" onClick={this.onClick}>{this.state.marker ? 'Add marker' : 'Remove marker'}</button>
    }
});

存储布尔值并在单击按钮时更新。您可以根据该布尔值管理按钮文本。

答案 1 :(得分:0)

您可以使用event.target访问该元素, 如果您将按钮的值设置为“添加”或“删除”,您可以通过event.target.value捕获它

代表

handleClick(event) {
    let actionType = event.target.value; // 'add' or 'remove', now you can control the flow with switch case or regular if's */
}
render(){
    return (<button value='add' onClick={this.handleClick}>{name}</button>)
}