react 一个函数中使用两次setState(第二次在settimeou里面)为什么还是会合并执行阿。。。

新手上路,请多包涵

我想做一个防止重复点击,但是现在这样isClickable并不能设置为false,把settimeout注释掉当然正常disable,加上之后disable就失效了。。。### 问题描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

handleButtonClickTest = (hireTeamId) => {

this.props.actions.deleteHiringTeamMember(hireTeamId);
this.setState({
  isClickable: false,
});
setTimeout(this.setState({ isClickable: true }), 5000);

}

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 3.1k
3 个回答

setTimeout应该这么写

setTimeout(() => {
  this.setState({ isClickable: true })
}, 5000)

像你那么写的话,就直接执行了

setTimeout的第一个参数是一个函数引用,像你这么传的话,相当于先执行this.setState({ isClickable: true }),获取结构,在传入setTimeout,作为第一个参数,所以总是立即执行,没有延时的效果

我的写法是根据props状态的变化,来对应渲染不同的按钮,一个是提交的,一个是禁止的,不过需要集成redux

我是建议这个变量放全局,可以不用放state, 因为setState是异步函数,全局的话就直接赋值

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题