ReactJS onClick 不会触发
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 将在没有点击侦听器的情况下创建,因为 dom 中实际上并不存在"Bar"(实际上只有div 存在)。
而且您还错过了初始化state
getInitialState: function(){
return {
width: 30
}
}
否则你会得到一个错误
未捕获的类型错误: 无法读取 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)}} >
相关文章:
- onClick事件未触发reactjs
- ReactJS:如何使用react正确播放带有onClick事件的html5视频
- ReactJS:onClick更改元素
- 在ReactJS onclick中传递参数
- Reactjs组件与onClick同时更新
- ReactJS onClick 不会触发
- 触发 ReactJS 元素的 onClick 事件
- 如何在onClick事件中使用ReactJS淡出/淡入内容
- ReactJS 从父组件的 onClick 方法更新对子组件的 ajax 调用
- ReactJS onClick 事件,该事件禁用在 标签上的第二次单击
- onClick未在地图内开火-ReactJS
- onClick不会触发reactJS
- reactjs onClick处理程序未附加在Windows 8和7上的IE11上
- 将onClick处理程序附加到已填充的列表项reactjs
- ReactJS onClick在列表项
- ReactJS——处理整个section的onClick事件,除了几个子元素
- Reactjs的onClick:如何设置列表中被点击按钮的状态
- 在ReactJS中动态onClick和渲染
- ReactJs 尝试在 Ajax 加载元素之前附加 onclick 处理程序
- ReactJS的onClick .next()元素具有相同的类