博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React函数组件和类组件的相同和区别
阅读量:4098 次
发布时间:2019-05-25

本文共 1053 字,大约阅读时间需要 3 分钟。

在线测试

相同之处

  • props不能改变
  • 父组件props有变化时,子组件随之而改变

区别

区别 函数组件 类组件
生命周期
this
state
改变state React.Hooks : useState this.setState()
性能 高(不用实例化) 低(需要实例化)

其他区别

1.类组件demo

import React from 'react';class ProfilePage extends React.Component {
showMessage = () => {
alert('Followed ' + this.props.user); }; handleClick = () => {
setTimeout(this.showMessage, 3000); }; render() {
return ; }}export default ProfilePage;
  • 当我改变props时,我发现改变了props的值(Dan->Sophie),类组件也改变了值,永远保持一致
    在这里插入图片描述
  • 原因分析
    类组件捕获最新的值(永远保持一致)当实例的props属性发生修改时,class组件直接使用this(组件的实例),所以可以直接获取组件最新的props

2.函数式组件demo

import React from 'react';function ProfilePage(props) {
const showMessage = () => {
alert('Followed ' + props.user); }; const handleClick = () => {
setTimeout(showMessage, 3000); }; return ( );}export default ProfilePage;
  • 当我改变props时(Dan->Sophie),你会发现函数组件会渲染之前的值Dan这个名字
    在这里插入图片描述
  • 原因分析:函数式组件捕获了渲染所使用的值。在函数组件中,之前的props参数,已经因为javascript闭包的特性,保存在内存之中,无法从外部进行修改。所以在定时器执行callback时,打印的还是旧值

参考链接:

3.如何在react组件中打印出最新的值?用useRef

具体如何使用查看我的另一篇文章

转载地址:http://tfqii.baihongyu.com/

你可能感兴趣的文章
SSM-CRUD(1)---环境搭建
查看>>
SSM-CRUD(2)---查询
查看>>
SSM-CRUD (3)---查询功能改造
查看>>
Nginx(2)---安装与启动
查看>>
springBoot(5)---整合servlet、Filter、Listener
查看>>
C++ 模板类型参数
查看>>
C++ 非类型模版参数
查看>>
设计模式 依赖倒转原则 & 里氏代换原则
查看>>
DirectX11 光照
查看>>
图形学 图形渲染管线
查看>>
DirectX11 计时和动画
查看>>
DirectX11 光照与材质的相互作用
查看>>
DirectX11 环境光
查看>>
DirectX11 镜面光
查看>>
DirectX11 三种光照组成对比
查看>>
DirectX11 指定材质
查看>>
DirectX11 平行光
查看>>
DirectX11 点光
查看>>
DirectX11 聚光灯
查看>>
DirectX11 HLSL打包(packing)格式和“pad”变量的必要性
查看>>