报错代码如下:(用箭头函数)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方式定义的,会提前,写在哪里都可以。但是赋值形式的,必须要写在前面才行。看看是不是先调用,后声明的。
眼眸繁星
TA贡献1873条经验 获得超9个赞
可能和你的babelplugin有关你用的class内直接定义属性,是propertyinitializers语法目前处于stage2状态你可以通过点击这个链接看到,当前的提案进度。。而关于你的语法提案在这
添加回答
举报
0/150
提交
取消