点击时的反应不能与箭头功能一起工作
react on click doesn't work with arrow function
下面的代码有问题吗?我试着使用箭头函数,但是什么也没发生。
class App extends React.Component {
promt() => {
alert('trigger prompt!');
},
render(){
return(
<h1 onClick="this.promt()">Hello world</h1>
)
}
}
ReactDOM.render(<App />,document.getElementById('app-container'));
https://jsbin.com/nisetupaqa/edit?html, js、控制台、输出
您的语法不正确。promt() => { ... }
对ES6类无效。要实现箭头函数,必须将其赋值为,作为类属性,如下所示:
promt = () => {
alert("trigger prompt");
}
注意类属性是一个实验特性,在第二阶段,还没有完全实现。根据文档:
Stage-X(实验预设)
stage-x预设中的任何转换都是未被批准成为Javascript版本(如ES6/ES2015)一部分的语言更改。
"对语言的更改是通过一个过程开发的,该过程为从一个想法发展到一个完全指定的功能提供了指导方针"
随时可能更改这些建议可能会更改,因此使用时要格外小心,特别是对于阶段3之前的任何内容
同时,只使用常规的ES6类函数:
promt() {
alert("trigger prompt");
}
同时,函数之间没有逗号。另外,使用{ }
来引用函数作为处理程序,不要使用字符串。这意味着:
<h1 onClick="this.promt()">Hello world</h1>
是不正确的。将引用用花括号括起来,并去掉圆括号,因为您需要的是函数引用,而不是调用:
<h1 onClick={this.promt}>Hello world</h1>
应该传递引用,而不是调用的结果:
onClick={this.promt}
调用一次,那么处理程序中就没有定义。
promt() => {
alert('trigger prompt!');
},
更改为:
promt() {
alert('trigger prompt!');
}
你不必放置箭头和逗号。此外,您可以在jsbin页面的控制台中找到它。
完整代码:
class App extends React.Component {
promt() {
alert('trigger prompt!');
}
render(){
return(
<h1 onClick={this.promt}>Hello world</h1>
)
}
}
ReactDOM.render(<App />,document.getElementById('app-container'));
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 转义符不能与innerHTML一起使用
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 如何将具有相同功能的两个select html标签的两个JS组合在一起
- 如果与同步功能一起使用,将延迟阻塞UI
- 我将如何让OpenLayers功能选择和Javascript拖放一起工作
- 将 JavaScript 与 TreeView 节点一起使用 检查/取消选中功能
- 如何将自动完成功能与 AJAX 一起使用
- 无法将引导折叠功能与角度路由一起使用
- 将if和else-if功能与选择输入一起使用(根据公里和英里转换结果)
- Node.js是否可以具有与PHP相同的功能,或者它们应该一起使用
- 谷歌分析-显示功能与事件点击一起发送
- 复选/取消复选框不能与prop功能一起工作
- Textarea不能与jQuery live keyup功能一起工作
- Soundcloud stream: onfinish功能无法与锁定的手机一起工作
- 使onclick功能与ENTER一起工作;Go"Safari Mobile(iOS)上的按钮
- 点击时的反应不能与箭头功能一起工作