小编luk*_*az7的帖子

在未挂载的组件上调用 setState

在我的很多组件中,我需要做这样的事情:

handleSubmit() {
  this.setState({loading: true})
  someAsyncFunc()
    .then(() => {
      return this.props.onSuccess()
    })
    .finally(() => this.setState({loading: false}))
}
Run Code Online (Sandbox Code Playgroud)

onSuccess功能

  • 可能是也可能不是承诺(如果是,loading应该保持真实,直到解决)
  • 可能会也可能不会卸载组件(它可能会关闭该组件所在的模式,甚至导航到不同的页面)

如果函数卸载组件,this.setState({loading: false})显然会触发警告Can't call setState (or forceUpdate) on an unmounted component.

我的两个问题:

  1. 有没有一种简单的方法可以避免这个问题?我不想设置一些_isMounted变量componentDidMountcomponentWillUnmount,然后检查它需要在我的大多数组件的时候,再加上我可能会忘记做下一次写这样的事情...
  2. 真的有问题吗?我知道,根据警告,it indicates a memory leak in my application但在这种情况下它不是内存泄漏,是吗?也许忽略警告就可以了......

编辑:第二个问题对我来说比第一个问题更重要一点。如果这真的是一个问题并且我无法调用setState未安装的组件,我可能会自己找到一些解决方法。但我很好奇我是否不能忽略它。

问题的现场示例:

handleSubmit() {
  this.setState({loading: true})
  someAsyncFunc()
    .then(() => {
      return this.props.onSuccess()
    })
    .finally(() => this.setState({loading: false}))
}
Run Code Online (Sandbox Code Playgroud)
const someAsyncFunc = () => …
Run Code Online (Sandbox Code Playgroud)

javascript promise reactjs

5
推荐指数
1
解决办法
3092
查看次数

如何覆盖文件夹的设置

我的工作区中有一个文件夹,我需要仅覆盖该文件夹的一些设置。怎么做 ?(可能是一个愚蠢的问题,但我已经尝试了半个小时但没有成功)

visual-studio-code

5
推荐指数
1
解决办法
2079
查看次数

标签 统计

javascript ×1

promise ×1

reactjs ×1

visual-studio-code ×1