react定义函数报错

报错代码如下:(用箭头函数)
handlePublish2=()=>{
console.log(this.state.comment)
}
'handlePublish2'isnotdefinedno-undef
Searchforthekeywordstolearnmoreabouteacherror.
换了种写法就没报错:
handlePublish2(){
console.log(this.state.comment)
}
//不过要手动绑定一下,感觉没个函数都要绑定,好麻烦=。=
this.handlePublish=this.handlePublish.bind(this)
为什么用箭头函数就不行额。。我看网上的代码都是可以的,求解
完整代码:
importReact,{Component}from'react';
exportdefaultclassPublishextendsComponent{
constructor(){
super()
this.state={
username:'',
comment:'',
commentArr:[]
}
this.handlePublish=this.handlePublish.bind(this);
this.handleNameChange=this.handleNameChange.bind(this);
this.handleCommentChange=this.handleCommentChange.bind(this);
}
handlePublish(){
const{username,comment}=this.state
if(!username){
alert('请输入用户名')
return
}
if(!comment){
alert('请输入内容')
return
}
this.state.commentArr.push({
username:this.state.username,
comment:this.state.comment
})
this.reset()
this.forceUpdate()
}
handleNameChange(e){
this.setState({
username:e.target.value
})
}
handleCommentChange(e){
this.setState({
comment:e.target.value
})
}
reset(){
this.setState({
username:'',
comment:'',
})
}
handlePublish2=()=>{
console.log(this.state.comment)
}
render(){
letcommentArr=this.state.commentArr.map((comment,idx)=>{
return(
{comment.username}--
{comment.comment}
)
})
return(
发布
{commentArr}
)
}
}
慕斯709654
浏览 750回答 2
2回答

慕哥9229398

提示说的很清楚啊,你没有定义变量,就直接赋值了。加上声明:consthandlePublish2=()=>{console.log(this.state.comment)}如果不是变量声明的问题。那就是你写的顺序问题了。function方式定义的,会提前,写在哪里都可以。但是赋值形式的,必须要写在前面才行。看看是不是先调用,后声明的。

眼眸繁星

可能和你的babelplugin有关你用的class内直接定义属性,是propertyinitializers语法目前处于stage2状态你可以通过点击这个链接看到,当前的提案进度。。而关于你的语法提案在这
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript