2017-01-16 68 views
0

我想创建一个按钮,可以有一个按钮上的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/

回答

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> 
    } 
}); 

存储一个布尔值和更新,当点击按钮。您可以基于该布尔值来管理按钮文本。

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>) 
}