reactjs - 昂贵的函数阻止 render() 更新

标签 reactjs rerender

在我的(类)组件中,我想在 _expenseFunction 的持续时间内显示加载微调器。 值isLoading在函数执行前的状态发生了变化,但在_expectiveFunction完成之前不会重新渲染(spinner不旋转)。

我尝试使用componentDidUpdate和forceUpdate,但没有成功。

_makeCalculation() {
  this.setState(
    { isLoading: true },
    () => this._expensiveFunction(),
  );
}


_expensiveFunction() {
  console.log(this.state.isLoading); // => true
  // ***
  this.setState({ isLoading: false });
}

最佳答案

一个常见的技巧是依赖 setTimeout():

_makeCalculation() {
  this.setState(
    { isLoading: true },
    () => setTimeout(this._expensiveFunction, 0),
  );
}

关于reactjs - 昂贵的函数阻止 render() 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57311241/

相关文章:

java - 在 GXT 中重新渲染

javascript - 尽管对所有项目使用唯一键,但添加新项目时,React 会重新渲染数组中的所有项目

backbone.js - 从主干 View 重新渲染部分 Handlebars

javascript - 如何避免因 mapDispatchToProps 函数而重新渲染连接的 React PureComponent?

reactjs - 如何使用 ant design 动态生成选择组件的选项

javascript - 为什么我的组件在传递 props( react )时没有渲染?

reactjs - 重新渲染后该函数在哪里继续?

react-native - React Native - goBack() 上的 React 导航重新渲染面板

javascript - 在 React/TypeScript 中渲染一组组件?

javascript - 如何使用 React es6 处理多个受控输入?