我对firefox
和chrome
的下列代码有不同的行为,我认为firefox
更正确。
firefox
将打印在console
:
<button value="2" class="mdl-button mdl-js-button mdl-button--icon" data-upgraded=",MaterialButton">
而chrome
会打印出来:
<i class="material-icons">star_border</i>
这是我的代码:
<button value={props.value} className="mdl-button mdl-js-button mdl-button--icon" onClick={(e) => {
e.preventDefault();
props.onClick(e);
}}>
<i className="material-icons">{props.icon}</i>
</button>
onClick(e) {
console.log(e.target);
}
答案 0 :(得分:2)
na = c("", NA, "-")
将为您提供点击DOM的最后一页,在您的示例中,可以是e.target
,也可以是其中一个子项<button />
。
在以下示例中,请尝试:
点击按钮e.target === <i />
点击按钮中间的e.target === button
i
class App extends React.Component{
render() {
return (
<button value={this.props.value} className="mdl-button mdl-js-button mdl-button-icon" onClick={(e) => {
e.preventDefault();
this.props.onClick(e);
}}>
<i className="material-icons">{this.props.icon}</i>
</button>
)
}
}
ReactDOM.render(<App icon="click me" onClick={(e) => console.log(e.target)} />, document.querySelector('#app'))
.mdl-button {
font-size: 15px;
width: 200px;
height: 40px;
}
答案 1 :(得分:0)
答案 2 :(得分:0)
为避免跨浏览器问题,最佳解决方案是将值传递给点击处理函数而不是事件本身。
<button value={props.value} className="mdl-button mdl-js-button mdl-button--icon" onClick={(e) => {
e.preventDefault();
props.onClick(props.value);
}}>
<i className="material-icons">{props.icon}</i>
</button>
onClick(value) {
console.log(value);
}