[英]ReactJS onClick doesn't trigger
我在使onClick
在reactJS中工作時遇到麻煩。 我整理了這個小提琴,並確定它是微不足道的。 代碼如下,請參閱fildle以獲取(不起作用的)示例:
var Bar=React.createClass({
render: function() {
return (
<div className="bar" style={{width: this.props.width+"px"}}> {this.props.width}</div>)
}
})
var ClickableBar=React.createClass({
clickBar: function(e) {
alert('clicked');
this.setState({width:220});
},
render: function() {
return (
<Bar onClick={this.clickBar} width={this.state.width}/>
)
}
})
ReactDOM.render(
<ClickableBar width="20"/>,
document.getElementById('container')
);
您只需要通過處理程序作為道具:
var Bar = React.createClass({
render: function() {
return (
<div onClick={this.props.onClick} className="bar" style={{width: this.props.width+"px"}}>{this.props.width}</div>
);
}
});
否則,將在您的div上創建沒有單擊偵聽器的div,因為dom中實際上並不存在“ Bar”(只有div實際上存在)。
而且您也錯過了初始化state
getInitialState: function(){
return {
width: 30
}
}
否則你會得到一個錯誤
未捕獲的TypeError:無法讀取null的屬性“ width”
我更喜歡用這種方式
render(){
var myStyle = {width: 200, backgroundColor: green};
return <div style={myStyle }> ... </div>
}
它也可以與React一起使用。 Fiddle example
謝謝
您只需要將函數與DOM元素綁定即可。
<Bar onClick={this.clickBar.bind(this)} width={this.state.width}/>
要么
<Bar onClick={() => {this.clickBar()}} width={this.state.width}/>
如果要通過傳遞事件來調用函數:
<select onClick = {(event) => {self.funcName(event)}} >
如果要通過傳遞參數來調用函數:
<select onClick = {(event) => {self.funcName(event, arg1)}} >
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.