【问题标题】: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 特有的;您问的问题类似于“什么是函数,我为什么要使用它” 抱歉,但我的最佳答案是:您需要学习一些基础知识。 学习是什么,继承是什么

标签: javascript reactjs react-native es6-class


【解决方案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 吗?对吧?
      • 对不起,我不太清楚你的问题。但是看看我的另一篇文章应该可以满足您的查询:stackoverflow.com/questions/52460185/…
      猜你喜欢
      • 1970-01-01
      • 2017-02-25
      • 2018-03-11
      • 1970-01-01
      • 2015-12-07
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多