UI 设置状态后未更新

UI not updated after setting state

我正在执行一项需要几秒钟才能完成的任务,并试图显示一个动画进度指示器。尝试设置状态以更新指示器时,它只会在任务完成后更新。

我试过使用回调来完成此操作,但它似乎不起作用。

import React, { Component } from 'react'
import { Lion as Button } from 'react-button-loaders'

class xx extends Component {
  constructor(props){
  super(props)
  this.state = {
    buttonState: ''
  }

this.handleClick = this.handleClick.bind(this)
}

Test(){
  // Do task that takes some time
  this.setState({buttonState: 'finished'} // End animation
}

handleClick() {
  this.setState({buttonState: 'loading'},
  () => {
    this.Test()
  })
}
  render() {
    return (
      <div>
        <Button onClick={this.handleClick} state={this.state.buttonState}>Test
        </Button>
      </div>
    );
  }
}

export default xx;

如果不将状态设置为已完成,activity 指示器仅在整个任务完成后才会出现。

我想到的实现它的最快方法 not-blocking 是利用 setTimeout():

function Test(param) {
    setTimeout((param) => { /* ...code */ }, 1000);
}