为了账号安全,请及时绑定邮箱和手机立即绑定

react定义函数报错

react定义函数报错

慕斯709654 2019-05-25 13:19:59
报错代码如下:(用箭头函数)handlePublish2=()=>{console.log(this.state.comment)}'handlePublish2'isnotdefinedno-undefSearchforthekeywordstolearnmoreabouteacherror.换了种写法就没报错: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.stateif(!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})}}
查看完整描述

2 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

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

TA贡献1873条经验 获得超9个赞

可能和你的babelplugin有关你用的class内直接定义属性,是propertyinitializers语法目前处于stage2状态你可以通过点击这个链接看到,当前的提案进度。。而关于你的语法提案在这
                            
查看完整回答
反对 回复 2019-05-25
  • 2 回答
  • 0 关注
  • 749 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信