美文网首页
函数组件和类组件

函数组件和类组件

作者: bestCindy | 来源:发表于2022-03-26 21:26 被阅读0次
  • 组件允许你将 UI 拆分为独立可复用的代码片段,并对每个片段进行独立构思
  • 相同点
    • 它们都可以接收属性并且返回 React 元素
  • 不同点
    • 编程思想不同:类组件需要创建实例,是基于面向对象的方式编程,而函数式组件不需要创建实例,接收输入,返回输出,是基于函数式编程写的
    • 内存占用:类组件需要创建并保存实例,会占用一定内存,函数组件不需要创建实例,可以节约内存占用
    • 捕获特性:函数组件具有值捕获特性
    • 可测试性:函数式组件更方便编写单元测试
    • 状态:类组件有自己的实例,可以定义状态,而且可以修改状态更新组件,函数式组件以前没有状态,现在可以使用 useState 使用状态
    • 生命周期:类组件有自己完整的生命周期,可以在生命周期内编写逻辑,函数组件以前没有生命周期,现在可以使用 useEffect 实现类似生命周期的功能
    • 逻辑复用:类组件可以通过继承实现逻辑复用,但官方推荐组件优于继承,函数组件可以通过自定义 hooks 实现逻辑的复用
    • 跳过更新:类组件可以通过 shouldComponentUpdatePureComponent 来跳过更新,而函数式组件可以使用 React.memo 来跳过更新
    • 发展前景:未来函数式组件将会成为主流,因为它可以更好的屏蔽 this 问题、规范和复用逻辑,更好的适合事件分片和并发渲染

捕获特性例子:

function FunctionComponent() {
  let [number, setNumber] = React.useState(0);
  const handleClick = () => {
    setTimeout(() => {
      console.log(number);
    }, 1000);
    setNumber(number+1)
  }

  return (
    <div>
      <p>{number}</p>
      <button onClick={handleClick}>+</button>
    </div>
  )
}

ReactDOM.render(
  <React.StrictMode>
    <FunctionComponent />
  </React.StrictMode>,
  document.getElementById('root')
);
result

相关文章

  • React - 类组件创建

    React创建组件有两种方式 函数式组件 类组件函数式组件已经学过,现在看下类组件怎么写。 函数式组件和类组件区别...

  • React函数组件与类组件

    函数组件与类组件 GitHub地址 函数组件与类组件函数组件(functional component)类组件(c...

  • React Hook

    简介 :原本函数组件和类组件同为react组件,但是由于函数组件为无状态组件,react hook 的引入,让函数...

  • React基础知识

    基本 React 中的组件分为函数组件和类组件区分的话,简单的组件我们就用函数,如果复杂就用 class;函数组件...

  • React基础

    React包含react元素和react组件 react元素 react组件 react组件分为函数组件和类组件 ...

  • 最新面试集合

    react 1,react类组件和函数组件区别 函数组件:function Welcome (props) {re...

  • React学习笔记_02

    React 组件和状态 react 组件 1,组件的两种创建方式1,函数组件2,类组件 1,函数组件:使用 JS ...

  • React组件介绍

    组件介绍 React中组件主要可分为函数组件和类组件,两者区别是函数组件没有state和生命周期,故函数组件也称为...

  • React_hooks

    React_hooks React16.8新增的特性,主要针对函数组件 一、函数组件和类组件的区别 函数组件的运行...

  • @芥末的糖-----组件的定义

    1.无状态组件,函数式组件, 影子组件,傻瓜组件,UI组件 2.类的定义 总结:类的组件形式相对于函数化组件更消耗性能

网友评论

      本文标题:函数组件和类组件

      本文链接:https://www.haomeiwen.com/subject/kfesdrtx.html