为啥我们在 React 中创建类组件时要扩展 React.Component?

Posted

技术标签:

【中文标题】为啥我们在 React 中创建类组件时要扩展 React.Component?【英文标题】:Why we do extends React.Component when creating the class component in React?为什么我们在 React 中创建类组件时要扩展 React.Component? 【发布时间】:2019-03-06 06:04:08 【问题描述】:

我是 React 的新手,我很困惑,日夜不停地思考它,几乎我所有的头发都掉下来了,而且还在掉下来,这就是为什么我们在使用类创建组件时总是扩展 React.Component 类。

但是在 功能组件 和其他方法中,我们不会做任何这样的事情来将创建的组件推送到 React.Component 类。所以主要的问题是什么是 React.Component 类,为什么我们总是在小时候使用 extends 向它添加新组件 以及为什么我们不能在不使用类组件中的 extends 或不扩展 React.Component的情况下在 react native 中创建组件> 类。那么,React.Component 类是什么,在 React 内部发生了什么,场景是什么?

我将非常感谢能够通过示例和简单方法回答我的问题的人。

【问题讨论】:

因为可以使用React的Component方法可以使用。 @Bhojendra Rauniyar - 我没有收到你的评论。请编辑 Component 内部有很多钩子,如 render、componentDidMount 等,要使用它们,您将使用 React 的 Component。 看来你需要学习一些基本的东西,比如classinheritance是什么 你不知道的东西与 react 无关,但这些是你必须学习的基本编程知识。它们甚至不是 JS 特有的;您问的问题类似于“什么是函数,我为什么要使用它” 抱歉,但我的最佳答案是:您需要学习一些基础知识。 学习是什么,继承是什么 【参考方案1】:

React 组件只是简单的函数。

例如,只要不使用 JSX,就可以在不导入 react 的情况下渲染功能性 react 组件。

如果您想使用 JSX 并将您的 html 写入您的 js 文件,那么您需要导入 react

如果您想编写一个利用生命周期方法的组件,您需要扩展默认的Component 类。 Component 类包含生命周期方法,不应与其他通用 react 组件混淆,例如功能组件或您可能编写的任何组件。这个Component 指的是由react 维护的特定类实现。

扩展Component 将使您能够访问componentDidMountcomponentDidUpdatecomponentWillUnmountrender 等函数。

【讨论】:

【参考方案2】:

如果你扩展了 React.Component 类,你可以使用组件的生命周期来进行挂载和卸载。

参考这个https://reactjs.org/docs/react-component.html

【讨论】:

【参考方案3】:

通常,您将使用无状态组件作为表示层。您将使用 statefull 组件(基于类的组件)作为行为层(容器组件)。容器组件可以包含许多操作并接受您想要使用的许多钩子。例如。 render()componentDidMount()

您可以阅读由 React 的创建者 Dan Abramov 撰写的 blog。

您可以进一步阅读scotch blog。


但在进一步使用 React 之前,我强烈建议你学习 javascript 和 ES6+ 特性。有很多材料可以学习。但是从MDN 开始会很好。

【讨论】:

那么,就是说react提供了很多方法来创建和渲染组件,要么用函数创建组件,要么用类创建组件,或者用其他方法,对吧?所有这些都被 React 处理并序列化并最终落入 DOM 吗?对吧? React 使用自己的 ReactDOM。 那么,就是说react提供了很多方法来创建和渲染组件,要么用函数创建组件,要么用类创建组件,或者用其他方法,对吧?而所有这些都被 React 处理并序列化并最终落入 ReactDOM 吗?对吧? 对不起,我不太清楚你的问题。但是看看我的另一篇文章应该可以满足您的查询:***.com/questions/52460185/…

以上是关于为啥我们在 React 中创建类组件时要扩展 React.Component?的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中的类中创建类对象的动态数组

为啥在 React.js 中为组件使用单独的 CSS 文件

访问Class中的常量而不在ObjectiveC中创建类的实例[重复]

React 组件中的错误导致应用程序重新渲染,从而导致无限循环。为啥?

在 Flex 4 中创建照片编辑器时要考虑的关键组件和其他内容?

扩展组件(反应)或扩展应用程序(下一个/应用程序)