【问题标题】:If component returns null in its render function, why componentDidMount is triggered?如果组件在其渲染函数中返回null,为什么会触发componentDidMount?
【发布时间】:2018-08-13 12:27:39
【问题描述】:

我使用 React 已经有一段时间了,但是今天我开始想知道一件事。

即使我的渲染函数返回null,为什么会触发componentDidMount 方法?

来自docs

componentDidMount() 在组件运行后立即调用 安装(插入树中)。需要 DOM 的初始化 节点应该放在这里。如果您需要从远程端点加载数据, 这是一个实例化网络请求的好地方。

据我理解:组件返回null,因此在 DOM 树中没有可挂载的内容,并且不应触发 componentDidMount

【问题讨论】:

标签: javascript reactjs


【解决方案1】:

componentDidMount() 将在render() 之后触发!所以你说你的渲染函数返回null,这意味着渲染函数执行!

证明:

如果你在你的渲染函数中放了一个console.log,正好在return之前(我大部分时间都在检查状态更新或检查当前组件是否从父组件接收道具)你会看到日志结果在控制台中,这意味着 javascript 执行渲染。

不管它会渲染什么,null 或一百行的jsx

【讨论】:

  • 好的,但是文档对此并不太清楚-尤其是这句话:“在安装组件之后(插入到树中)”
  • 但关键是您 inserting 到 DOM 中,在您的情况下为 null
  • 根据my feedback here 关于您现在已删除的问题:(1)您在此处的帖子中很少需要换行符<br> - 使用双输入来创建段落分隔符; (2) 提及自己时,“I”应为大写字母; (3) 句子以大写字母开头。请在以后的帖子中尽量避免这些错误,以减少所需的志愿维修工作量。
  • 如果您认为 Stack Overflow 更像 Wikipedia,而不像聊天室,那可能是一种有助于理解的方式
  • 我相信这个“​​但关键是你在 DOM 中插入一些东西,在你的情况下为 null”是一般的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
  • 2021-07-02
  • 1970-01-01
相关资源
最近更新 更多