javascript - react - 如何强制元素立即重绘

标签 javascript reactjs

我在 react 组件中有一个切换按钮:

toggleSpeak = () => {
   this.setState({buttonOn: !this.state.buttonOn});
}

按钮根据其状态改变其样式:

 <img key="headphones" className={audioclass} src={this.state.buttonOn ? white : black} onClick={this.toggleSpeak}/>

这也会触发子组件中的一些内容:

play={this.state.buttonOn}

这会触发一些语音合成播放,有时需要一段时间。问题是我希望用户立即意识到有事情发生。但是,该按钮不会立即更改其样式。只要我触发其他内容,无论是通过上面的子级传递属性,还是通过触发 redux 操作,它仍然会延迟更改颜色几秒钟。

我想立即改变颜色,不要拖延,这样用户就知道不要继续推它。我怎样才能做到这一点?

最佳答案

this.setState({}) 函数确实是异步的,因此考虑到触发器中的所有内容,您所声明的内容可能在很短的毫秒内为真

toggleSpeak = () => {
   this.setState({buttonOn: !this.state.buttonOn});
}

您所说的明显延迟应该是不明显的。我认为延迟是由其他地方造成的。 (假设您需要在 this.setState({}) 之前运行一些其他同步代码。请向我们展示更多相关代码,以便我们更好地掌握正在发生的情况。

关于javascript - react - 如何强制元素立即重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50788885/

相关文章:

javascript - 从单选按钮显示 Div(带提交按钮)

Javascript:数组中的对象有 undefined variable ?

javascript - 如何在 TIdHTTPServer 中实现 ajax 进度?

javascript - Reactjs 中获取错误处理的问题

javascript - Ant 设计 : How can I disable border-bottom of a menu item on hover?

javascript - 将数组绑定(bind)到状态时出错

javascript - jQuery 悬停滚动,只需要一点帮助

javascript - 计算剩余下载时间

javascript - 在 React 组件中收听 window.onmessage

javascript - 当组件在 native react 中重新呈现时,动态不透明度不会改变