iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >React函数式组件与类组件的不同点是什么
  • 349
分享到

React函数式组件与类组件的不同点是什么

2023-06-29 17:06:00 349人浏览 安东尼
摘要

本文小编为大家详细介绍“React函数式组件与类组件的不同点是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“React函数式组件与类组件的不同点是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。区别区别函

本文小编为大家详细介绍“React函数式组件与类组件的不同点是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“React函数式组件与类组件的不同点是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

区别

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

其他区别

ProfilePageClass.js

import React from 'react';class ProfilePageClass extends React.Component {    showMessage = () => {        alert('Folloed' + this.props.user);    };    handleclick = () => {        setTimeout(this.showMessage,3000);    };    render(){        return <button onClick={this.handleclick}>Follow</button>    }}export default ProfilePageClass;

ProfilePageFunction.js

import React from 'react';function ProfilePageFunction(props){    const showMessage = () => {        alert('Followed'+ props.user);    }    const handleClick = () => {        setTimeout(showMessage,3000);    }    return(        <button onClick={handleClick}>Follow</button>    )}export default ProfilePageFunction;

Home.js

import React from "react";import ProfilePageFunction from './ProfilePageFunction';import ProfilePageClass from './ProfilePageClass';class Home extends React.Component {    state = {        user: 'Dan',    };    render() {        return (            <>                <label>                    <b>Choose profile to view: </b>                    <select                        value={this.state.user}                        onChange={e => this.setState({ user: e.target.value })}                    >                        <option value="Dan">Dan</option>                        <option value="Sophie">Sophie</option>                        <option value="Sunil">Sunil</option>                    </select>                </label>                <h2>Welcome to {this.state.user}'s profile!</h2>                <p>                    <ProfilePageFunction user={this.state.user} />                    <b> (function组件)</b>                </p>                <p>                    <ProfilePageClass user={this.state.user} />                    <b> (class组件)</b>                </p>                <p>                    Can you spot the difference in the behavior?                </p>            </>        )    }}export default Home;

页面展示:

React函数式组件与类组件的不同点是什么

进行如下操作发现问题:(初始用户为Dan)

点击其中的Follow按钮

3s内切换选中的账号

查看弹出的文本。

点击函数组件的Follow:

React函数式组件与类组件的不同点是什么

点击类组件的Follow:

React函数式组件与类组件的不同点是什么

点击件的Follow按钮时,执行handleClick(),3s后显示用户的姓名。

函数组件:若你在点击Follow按钮3s内切换用户,3s后调用的函数输出的用户仍未之前的用户姓名。

类组件:若你在点击Follow按钮3s内切换用户,3s后调用的函数输出的用户为改变之后的用户姓名。

此时类组件就有一个问题:我之前的handleClick()执行的是A用户的操作,但操作还没执行,切换用户后,直接调用执行了B用户的相同操作。

此案例中,当父组件的state改变时,子组件进行重新渲染,子组件的props改变;

类组件:

  • 改变props(Dan-Sophie),类组件也改变了值,永远保持一致。

  • 原因:类组件捕获最新的值(永远保持一致)当实例的props属性发生修改时,class组件直接使用this(组件的实例),所以可以直接获取组件最新的props。

函数组件:函数式组件捕获了渲染所用的值。

  • 当我改变props时(Dan->Sophie),你会发现函数组件会渲染之前的值Dan这个名字。

  • 原因:函数式组件捕获了渲染所使用的值。在函数组件中,之前的props参数,已经因为javascript闭包的特性,保存在内存之中,无法从外部进行修改(维护多个人的状态)。所以在定时器执行callback时,打印的还是旧值。

使用Hooks,同样的原则也适用于state。看这个例子:

MessageThread.js

import {useState} from 'react';function MessageThread() {    const [message, setMessage] = useState('');    const showMessage = () => {        alert('You said: ' + message);    };    const handleSendClick = () => {        setTimeout(showMessage, 3000);    };    const handleMessageChange = (e) => {        setMessage(e.target.value);    };    return (        <>            <input value={message} onChange={handleMessageChange} />            <button onClick={handleSendClick}>Send</button>        </>    );}export default MessageThread;

React函数式组件与类组件的不同点是什么

说明了同样的观点:如果我发送一条特定的消息,组件不应该对实际发送的是哪条消息感到困惑。这个函数组件的message变量捕获了“属于”返回了被浏览器调用的单击处理函数的那一次渲染。

所以当我点击“发送”时message被设置为那一刻在input中输入的内容。

在函数式组件中,你也可以拥有一个在所有的组件渲染帧中共享的可变变量,它被成为“ref”。 ref可以随时读取当前值。
需要自己手动管理。

import React, { useState, useEffect, useRef } from "react";import ReactDOM from "react-dom";function MessageThread() {    const [message, setMessage] = useState('');    // Keep track of the latest value.    const latestMessage = useRef('');    useEffect(() => {        latestMessage.current = message;    });        const showMessage = () => {        alert('You said: ' + latestMessage.current);    };    const handleSendClick = () => {        setTimeout(showMessage, 3000);    };    const handleMessageChange = (e) => {        setMessage(e.target.value);    };    return (        <>            <input value={message} onChange={handleMessageChange} />            <button onClick={handleSendClick}>Send</button>        </>    );}export default MessageThread;

React函数式组件与类组件的不同点是什么

读到这里,这篇“React函数式组件与类组件的不同点是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: React函数式组件与类组件的不同点是什么

本文链接: https://www.lsjlt.com/news/325931.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • React函数式组件与类组件的不同点是什么
    本文小编为大家详细介绍“React函数式组件与类组件的不同点是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“React函数式组件与类组件的不同点是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。区别区别函...
    99+
    2023-06-29
  • React函数式组件与类组件的不同你知道吗
    目录区别其他区别总结区别 区别函数组件类组件生命周期无有this无有state无有改变stateReact Hooks:useStatethis.setState()性能高(不用实例...
    99+
    2024-04-02
  • React函数组件与类组件怎么使用
    这篇“React函数组件与类组件怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“React函数组件与类组件怎么使用”文...
    99+
    2023-06-30
  • React 函数式组件和类式组件详情
    目录前言1. 函数式组件2. 类式组件前言 React 是 组件化的 的 JS 库,组件化 也是 React 的核心思想。使用 React 可以构建管理...
    99+
    2022-11-13
    React 函数式组件 React 类式组件
  • React函数组件与类组件使用及优劣对比
    目录一、类组件的问题原因一、因为this带来的问题:问题描述问题解析原因二、类组件代码量比函数组件多:原因三、类组件过于臃肿不易拆分:二、函数组件的问题挂载阶段:getDervied...
    99+
    2024-04-02
  • React函数组件与类的区别有哪些
    目录一、函数式组件捕获了渲染所用的值二、闭包让类组件成为拥有特定props和state的渲染三、区分useState与useRef的使用首先我们要知道的是,项目性能能主要取决于代码的...
    99+
    2022-11-13
    React函数组件与类 React函数组件
  • React函数组件和类组件的区别及说明
    目录React函数组件和类组件区别函数组件类组件区别React函数式组件和类组件的优缺点1.类组件的性能消耗比较大2.函数式组件性能消耗小React函数组件和类组件区别 定义组件有两...
    99+
    2022-11-13
    React函数组件 React类组件 React函数
  • Vue.js函数式组件是什么
    这篇文章主要为大家展示了“Vue.js函数式组件是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue.js函数式组件是什么”这篇文章吧。前言如果你是一位前端开发者,又在某些机会下阅读过一些...
    99+
    2023-06-25
  • react类组件和函数组件区别有哪些
    React 类组件和函数组件是两种不同的组件写法,它们之间有以下几个主要区别:1. 语法:React 类组件是通过 ES6 的 cl...
    99+
    2023-10-07
    react
  • react生命周期的类组件和函数组件怎么写
    这篇文章主要介绍“react生命周期的类组件和函数组件怎么写”,在日常操作中,相信很多人在react生命周期的类组件和函数组件怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react生命周期的类组件和函...
    99+
    2023-07-04
  • react推荐函数组件的原因是什么
    这篇文章主要讲解了“react推荐函数组件的原因是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“react推荐函数组件的原因是什么”吧!原因:1、函数组件语法更短、更简单,这使得它更容易...
    99+
    2023-07-04
  • react函数组件对比类组件有哪些优势
    这篇文章主要讲解了“react函数组件对比类组件有哪些优势”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“react函数组件对比类组件有哪些优势”吧! ...
    99+
    2024-04-02
  • react为什么推荐函数组件
    本教程操作环境:Windows7系统、react18版、Dell G3电脑。当使用React框架开发的时候,有两种方式创建组件,使用函数和使用类,目前函数组件越来越流行。下面通过举例的方式,分析函数组件和类组件的不同,并总结一下使用函数组件...
    99+
    2023-05-14
    javascript React
  • react生命周期(类组件/函数组件)操作代码
    1.react代码模式分为两种 类组件和函数组件(生命周期也有所不同) 2.类组件(写法如下) import React from 'react' export default cl...
    99+
    2023-01-06
    react生命周期 react类组件 react函数组件
  • vue函数式组件的概念是什么
    今天小编给大家分享一下vue函数式组件的概念是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。vue函数式组件是一个不包含...
    99+
    2023-06-29
  • React组件的创建与state同步异步方法是什么
    这篇文章主要介绍“React组件的创建与state同步异步方法是什么”,在日常操作中,相信很多人在React组件的创建与state同步异步方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”React组件...
    99+
    2023-07-05
  • 使用 TypeScript 开发 React 函数式组件
    目录前言如何使用 TypeScript 定义函数式组件1. 使用 React.FC2. 使用 JSX.Element3. 直接定义完整类型4. 使用 React.PropsWithC...
    99+
    2024-04-02
  • React的组件通讯是什么
    本篇文章为大家展示了React的组件通讯是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。组件通讯介绍内容组件是独立且封闭的单元,默认情况下,只能使用组件自己的数据。在组件化过程中,我们将一个完整...
    99+
    2023-06-25
  • react状态组件是什么
    这篇文章主要介绍了react状态组件是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 react状态组件有2...
    99+
    2024-04-02
  • react hooks组件间的传值方式是什么
    这篇文章给大家介绍react hooks组件间的传值方式是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。父传子通过props传值,使用useState来控制state的状态值父组件 Father.tsx里:子组件 ...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作