问题描述
在安装阶段使用React componentDidMount
,例如,一个罐子setState
并将其包装在componentDidMount
中。但是,可以直接使用setState
,然后再使用render
该组件。
在哪种情况下,我更喜欢componentDidMount
来进行安装?
解决方法
它对以下几件事很有用:
- 启动Ajax
- 与the documentation says一样,对事物进行订阅(例如,如果组件以某种方式接收了其父组件无法处理的更新,例如来自Web套接字的事件流)
基本上在您希望首次启动组件时启动进程的任何时间。
经典示例是一个通过ajax加载内容的组件。它是这样的:
- 在组件的构造函数中,创建其默认状态,表明它正在加载某些东西。
- 在
componentDidMount
中,您将启动加载该内容的ajax调用。 - (如果)ajax调用成功时,您将使用该调用中的数据来更新状态
- 您编写
render
方法,以便它了解加载状态并适当显示加载或加载的内容(或加载错误)。
(在某些情况下,您不想这样做,而是想将其加载到父组件中,而仅创建拥有该组件的组件来显示它。但是有时,则直接在其中进行该组件并不罕见,它是一个有用的示例。)
,componentDidMount-当您只想在创建组件时仅执行一次功能时,它只能通过react执行一次。