用componentWillMount而不是componentD

用componentWillMount而不是componentD

本文介绍了何时使用componentWillMount而不是componentDidMount的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我找不到这两种生命周期方法的实际用法示例。我一直在写作反应一段时间,但是componentDidMount刚刚完成工作,这意味着调用fetch异步数据,但是我没有看到willMount的重点,任何线索?

I just couldn't find the practical usage example of these two life cycle method. I've been writing in react for a while, but componentDidMount just get the job done, it means to call fetch async data, but I don't see the point of willMount, any clue?

推荐答案

在初始渲染之前运行。但建议不要在此方法中进行任何订阅和状态设置。如果你想在渲染之前使用它,可以使用组件的构造函数。

componentWillMount runs before initial rendering. But it is not advised to do any subscriptions and state setting in this method. If you want to some of that before rendering you can use the constructor of the component.

可能的用例:


  • 设置组件的初始状态(但你可以使用构造函数)

  • 在服务器端渲染中运行服务器端代码以获取初始状态

  • 获取数据并设置初始状态

在初始渲染之后运行,并在Component最终完成装载DOM时进行标记。因此,您可以使用它来设置订阅和侦听器,甚至可以将数据提取到setState。

componentDidMount however runs after the initial rendering and marks when the Component has finnally finished mounting the DOM. So you can use this to set up subscriptions and listeners and even fetch data to setState.

可能的用例:


  • 设置事件监听器因为组件是已挂载

  • 获取数据和setState

  • 设置依赖于DOM的第三方库

BIG DIFFERENCE :在服务器端呈现只有 componentWillMount 在服务器端运行。因此,如果您曾经使用过SSR,请确保 componentDidMount

BIG DIFFERENCE: In Server Side Rendering only componentWillMount runs in the server side. So if you're ever using SSR make sure you don't have any server side code in componentDidMount

目前您可以(您决定是否应该)使用两者来设置初始状态。通常我看到大多数人都使用componentDidMount,但需求会发生变化,你可能会发现使用componentWillMount的一些用例。

Currently you can (you decide if you should) use both to setup initial state. Generally I've seen most people use componentDidMount for this but requirements change and you might find some use case for using componentWillMount.

然而,有关于弃用生命周期方法的讨论。

There has been however talks about deprecating the lifecycle method. here

这篇关于何时使用componentWillMount而不是componentDidMount的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-28 00:48