为什么React生命周期方法返回`mixed`而不是`void`?

时间:2018-01-29 03:12:33

标签: reactjs flowtype

谈论此处列出的类型:https://github.com/facebook/flow/blob/v0.63.1/lib/react.js#L45-L66

他们不应该返回void,因为他们没有return任何东西吗?

1 个答案:

答案 0 :(得分:3)

这是因为Flow issue #1803 "Allow react components' lifecycle methods to be async"。这意味着应该允许返回一个promise,以便这些函数可以是异步的。

创建了基于该讨论的Flow TODO issue "Allow React lifecycle methods to return mixed"this patch引入了从voidmixed的更改。

推理(引用)

  

这将允许人们写下这样的东西:

class Component extends React.Component {
  async componentDidMount() {
    // ...
  }
}

问题可以通过void | Promise<void>的返回类型解决,但与mixed一起使用的原因是

  

Flow似乎没有责任强制执行在运行时没有区别的东西