react中setState设置值失效
2020-03-01 22:15
1271 查看
react中setState设置值失效
在学react小书, 练习时遇到问题:
有一只狗,不允许别人摸它,一旦摸它就会叫,然后就跑了;这只狗跑一段时间(2s)以后就会停下来,也不叫了。 完成 Dog组件,当用户点击的时候会执行自身的 bark 和 run 方法。给这个 Dog 组件加上状态 isRunning 和 isBarking,在进行相应的动作的时候设置为 true,停下来的时候设置为 false。
class Dog2 extends Component{ constructor () { super() this.state={isRunning:false,isBarking:false} } bark () { this.setState({ isBarking: !this.state.isBarking, }) console.log(this.state.isBarking ? "barking" : "stopbarking") } run () { this.setState({ isRunning: !this.state.isRunning, }) console.log(this.state.isRunning ? "running" : "stoprunning") } //如果不使用setTimeout定时为0, 则setState无法更新值 //也就是isRunning的值仍然是false (stoprunning) onclickChangeState(){ setTimeout(()=>this.bark(),0) //使用setTimeout, isRunning值变为true setTimeout(()=>this.run(),0) // this.bark() //不使用setTimeout, isRunning值仍然为false // this.run() setTimeout(()=>{ //使用setTimeout this.bark() this.run() },2000) } render () { return ( <div onClick={this.onclickChangeState.bind(this)}>DOG</div> ) } }
利用setTimeout可以解决问题, 但是不太懂其中的原理, 应该是react的生命周期的问题(大概率), 如果有人懂, 还请赐教.
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- React——setState
- Android 列表中设置Button后setOnItemClickListener失效问题
- 浅谈使用React.setState需要注意的三点
- jstl中,c:set 设置的值在jsp:include 的页面失效
- react学习笔记:setState和replaceState的区别
- 关于React setState的实现原理(三)
- React setState更新数组中的某个元素Element item
- Android中EditView TextView (padding失效)使用setBackgroundDrawable或setBackgroundResource则xml中设置的 Padding失效
- PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
- D3D中设置渲染SetRenderState()使用
- ListCtrl设置行状态函数SetItemState
- react native 学习笔记 2016_1223 (环境,箭头函数,state设置,图片使用等)
- SetRenderState 设置渲染状态
- PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
- SetRenderState 设置渲染状态【转】
- react源码解读之setState方法
- 关于React “Cannot read property 'setState' of null” 的错误
- RadioButton设置setTextColor失效
- react native setState之后的state值不能立即使用
- DirectX 90 3D SetRenderState 设置渲染状态