首页 > 其他分享 >函数式组件与类组件

函数式组件与类组件

时间:2023-01-05 22:35:50浏览次数:48  
标签:函数 state usestate 数组 组件 变量

类组件的优势:
可以定义state,用以保存自己内部的变量;函数式组件不可以,每次调用后都会销毁函数内变量

在函数式组件内部不使用副作用钩子定义的变量统称为局部变量,在函数每次运行后都会重新定义一个变量,

类组件有自己的生命周期, 可以在对应的生命周期内实现对应的逻辑,

类组件可以在状态改变时只重新执行render函数以及希望调用的componentDidUpdate函数

类组件的优势:

代码冗余,一个生命周期函数内要写大量代码
this指向难以理解
组件状态难以复用

函数式组件由于有了副作用(hook)而大放异彩

为什么不用createState? 这是由于state只在组件首次渲染时被创建,下一次重新渲染时,usestate只返回当前state,如果每次都创建新的变量,那就不是所谓statel ————state标识长久非临时的变量

假设usestate中的数据是数组对象而有改变内部某个数据的需求,则需要声明一个新数组(浅拷贝),在这个新数组内对对应的数据进行增删改后,在使用setState对这个数组进行覆盖动作后即完成本次功能修改,应当保证源数组的纯洁性和不可修改性

标签:函数,state,usestate,数组,组件,变量
From: https://www.cnblogs.com/hjk1124/p/17029004.html

相关文章

  • 在C#中获取如PHP函数time()一样的时间戳
    c#中没有象PHP一样的time()时间戳函数,但有DateTime.Now.Ticks用来计算时间差。此属性的值为自0001年1月1日午夜12:00以来所经过时间以100毫微秒为间隔表示时的数......
  • 关于C语言库函数qsort的学习
    #include<stdio.h>#include<stdlib.h>#include<string.h>structStu{charname[20];intage;};//voidqsort(void*base,//size_tnum,//size_twidth,//int(*cmp......
  • 欧拉函数与莫比乌斯函数的一些性质
    前置知识翡蜀定理与算数基本定理的证明积性函数若有一个数论函数\(f\)满足以下性质:\(\left(1\right)f\left(1\right)=1\)\(\left(2\right)\)若\(a,b\)互质,那么\(f\le......
  • 如何给所有的 await async 函数添加try/catch?
    如何给所有的awaitasync函数添加try/catch?做全局捕获异常。面试官:如何给所有的awaitasync函数添加try/catch?做全局捕获异常。我们可以使用window.addEventListene......
  • 函数式接口
    1.函数式接口只能含有1个方法的接口,入参可以有多个,出参可有可无定义接口@FunctionalInterfacepublicinterfaceReceiverGetter{ List<Receiver>apply(ResGroupr......
  • C++静态类成员变量和成员函数
    头文件calculateBufferSize.h#ifndefCALCULATE_BUFFER_SIZE#defineCALCULATE_BUFFER_SIZE#include<mutex>#include<memory>#include<iostream>#include<glm/g......
  • 函数
    函数"""先定义后调用(函数名+括号)函数名的命名规则跟变量名一样函数在定义的时候只检测函数体语法,不执行函数体代码函数名遇到括号会立即执行函数体代码"""#定......
  • Android四大基本组件介绍与生命周期
    ​​Android四大基本组件介绍与生命周期​​Android四大基本组件分别是Activity,Service服务,ContentProvider内容提供者,BroadcastReceiver广播接收器。一:了解四大......
  • Python 函数
    一.函数的初识函数:以功能(完成一件事)为导向,登录,注册,len一个函数就是一个功能。随调随用函数的优势1.减少了代码的重复性。2.增强了代码的可读性 二.函数的结构和调用......
  • C#调用VC的DLL的接口函数参数类型转换一览表
    handle---------IntPtrhwnd-----------IntPtrchar*----------stringint*-----------refintint&-----------refintvoid*----------IntPtrunsignedchar*-----refbyt......