当前位置: 首页 > news >正文

React 19中如何向Vue那样自定义状态和方法暴露给父组件。

文章目录

  • 前言
    • 一、什么是 useImperativeHandle?
      • 1.1 为什么需要 useImperativeHandle?
      • 1.2 基本语法
    • 二、useImperativeHandle 的常见用法
      • 3.1 暴露自定义方法
      • 3.2子组件封装的弹窗关闭方法暴露给外部
    • 注意点:
    • 总结


前言

在 React 的函数组件中,我们通常通过 props 将数据从父组件传递给子组件,而子组件通过状态(useState)和副作用(useEffect)来管理自身的行为。然而,在某些场景下,我们希望父组件能够直接调用子组件中的某些方法或访问其内部状态。这时,useImperativeHandle 就派上了用场。

本文将深入探讨 useImperativeHandle 的用法、原理以及最佳实践,帮助你更好地掌握这一强大的 Hook。


一、什么是 useImperativeHandle?

useImperativeHandle 是 React 提供的一个 Hook,用于自定义暴露给父组件的实例值。它通常与 forwardRef 一起使用,允许父组件通过 ref 访问子组件中定义的方法或属性。

1.1 为什么需要 useImperativeHandle?

  • 封装组件内部逻辑:允许子组件将内部方法或状态暴露给父组件,而不需要将所有细节公开。
  • 增强组件的可复用性:通过暴露特定的 API,父组件可以更灵活地控制子组件的行为。
  • 避免直接操作 DOM:虽然 React 鼓励声明式编程,但在某些场景下(如操作第三方库),可能需要直接操作 DOM 或组件实例。

1.2 基本语法

	import React, { useImperativeHandle, forwardRef } from 'react';const ChildComponent = forwardRef((props, ref) => {useImperativeHandle(ref, () => ({customMethod: () => {console.log('Custom method called!');},}));return <div>Child Component</div>;});function ParentComponent() {const childRef = React.useRef(null);const handleClick = () => {childRef.current?.customMethod();};	return (<div><ChildComponent ref={childRef} /><button onClick={handleClick}>Call Child Method</button></div>);}

二、useImperativeHandle 的常见用法

3.1 暴露自定义方法

这是 useImperativeHandle最常见的用法。子组件可以暴露一些方法供父组件调用。

示例:自定义输入组件

interface ChildRef {focus: () => void;getValue: () => string;
}
import React, { useImperativeHandle, useState, useRef } from "react";// 子组件
const CustomInput = ({ ref }: { ref: React.Ref<ChildRef> }) => {const [value, setValue] = useState("");const iptRef = useRef<HTMLInputElement>(null);useImperativeHandle(ref, () => ({focus: () => {iptRef.current?.focus();},getValue: () => value,}));return (<inputtype="text"value={value}onChange={(e) => setValue(e.target.value)}ref={iptRef}/>);
};// 父组件
function ParentComponent() {const inputRef = useRef<ChildRef>(null);const handleFocus = () => {inputRef.current?.focus();};// 得到子组件的输入框中的值const handleGetValue = () => {console.log("Input value:", inputRef.current?.getValue());};return (<div><CustomInput ref={inputRef} /><button onClick={handleFocus}>聚焦</button><button onClick={handleGetValue}>得到输入框值</button></div>);
}export default ParentComponent;

3.2子组件封装的弹窗关闭方法暴露给外部

我们平常会封装一些组件,但改变组件状态通常由外部组件调用,这时我们就可以暴露方法给外部

示例:

interface ChildRef {focus: () => void;getValue: () => string;close: () => void;
}
import React, { useImperativeHandle, useState, useRef } from "react";// 子组件
const CustomInput = ({ ref }: { ref: React.Ref<ChildRef> }) => {const [value, setValue] = useState("");const iptRef = useRef<HTMLInputElement>(null);// 子组件的弹窗关闭const close = () => {console.log("子组件的弹窗关闭");};useImperativeHandle(ref, () => ({focus: () => {iptRef.current?.focus();},getValue: () => value,// 暴露子组件的弹窗关闭方法close: close,}));return (<inputtype="text"value={value}onChange={(e) => setValue(e.target.value)}ref={iptRef}/>);
};// 父组件
function ParentComponent() {const inputRef = useRef<ChildRef>(null);const handleFocus = () => {inputRef.current?.focus();};const handleGetValue = () => {console.log("Input value:", inputRef.current?.getValue());};return (<div><CustomInput ref={inputRef} /><button onClick={handleFocus}>聚焦</button><button onClick={handleGetValue}>得到输入框值</button><button onClick={() => inputRef.current?.close()}>关闭弹窗</button></div>);
}export default ParentComponent;

简单效果展示:
在这里插入图片描述

注意点:

  • 1.React18还在用forwardRef进行接收值传递,在React 19直接解构出来ref,并赋值ts类型
  • 在这里插入图片描述

总结

useImperativeHandle 是 React 中一个强大但容易被误用的 Hook。通过与 forwardRef 结合,它允许子组件自定义暴露给父组件的 API,从而实现更灵活的组件间通信。然而,使用时需要谨慎,避免滥用,保持组件的封装性和可维护性。

相关文章:

React 19中如何向Vue那样自定义状态和方法暴露给父组件。

文章目录 前言一、什么是 useImperativeHandle&#xff1f;1.1 为什么需要 useImperativeHandle&#xff1f;1.2 基本语法 二、useImperativeHandle 的常见用法3.1 暴露自定义方法3.2子组件封装的弹窗关闭方法暴露给外部 注意点&#xff1a;总结 前言 在 React 的函数组件中&a…...

【Linux高级全栈开发】2.1.2 事件驱动reactor的原理与实现

【Linux高级全栈开发】2.1.2 事件驱动reactor的原理与实现 高性能网络学习目录 基础内容&#xff08;两周完成&#xff09;&#xff1a; 2.1网络编程 2.1.1多路复用select/poll/epoll2.1.2事件驱动reactor2.1.3http服务器的实现 2.2网络原理 百万并发PosixAPIQUIC 2.3协程库…...

1.5 MouseDown,MouseUp,LostMouseCapture的先后顺序

本文目标是实现如下功能: 按下一个按钮后置位某变量;鼠标松开后复位某个变量? 看似简单,但是一般来说会存在如下两种现象: 鼠标移出按钮:默认会丢失鼠标事件跟踪,即MouseLeftButtonUp事件并不会被触发。 焦点切换:Tab 键切换焦点会干扰按钮的事件捕获 本文通过几个…...

备战!全国青少年信息素养大赛图形化编程-省赛——求最小公倍数

备战&#xff01;全国青少年信息素养大赛图形化编程-省赛——求最小公倍数 题目可点下方去处&#xff0c;支持在线编程~ 求最小公倍数_scratch_少儿编程题库学习中心-嗨信奥 程序演示可点击下方去处&#xff0c;支持源码和素材获取~ 求最小公倍数-scratch作品-少儿编程题库学习…...

Vue3进行工程化项目,保姆级教学(编译软件:vscode)大部分编译平台适用

目录 1. 创建vue工程 1.1 第一步 1.2 选择名称和工件 1.3 选择语言 1.4 自动下载js 1.5 运行vue工程 1.6 成功页面 2. 更改vue工程安装的位置 3. 更改运行工程方式 第一步 第二步 ​编辑 第三步 调试 ​编辑 运行项目 前面所学都是vue3的基础&#xff0c;为了简…...

通过觅思文档项目实现Obsidian文章浏览器在线访问

觅思文档项目开源地址 觅思文档项目开源地址&#xff1a;https://gitee.com/zmister/MrDoc 觅思文档部署步骤概览 服务器拉取代码&#xff1a; git clone https://gitee.com/zmister/mrdoc-install.git && cd mrdoc-install && chmod x docker-install.sh &a…...

⭐️白嫖的阿里云认证⭐️ 第二弹【课时1:提示词(Prompt)技巧】for 「大模型Clouder认证:利用大模型提升内容生产能力」

「大模型Clouder认证:利用大模型提升内容生产能力」这个认证目前在阿里云认证中心还是免费的,简单几步就可以申请考试,有两次的免费考试机会。而且,这个课程中的内容对于所有普通用户来说都非常实用,课程整体长度也就3节课,非常快速就能学完。心动不如行动,赶紧开始吧!…...

零基础搭建!基于PP-ShiTuV2的轻量级图像识别系统(Docker+API部署指南)

以下是对该图像分类识别系统的的简单介绍&#xff1a; PP-ShiTuV2 是一个由百度飞桨团队发布的实用轻量级通用图像识别系统&#xff0c;由主体检测、特征提取、向量检索三个模块构成&#xff0c;适用于快速构建轻量级、高精度、可落地的图像识别应用image_classification是一个…...

阿克曼-幻宇机器人系列教程4- 建图

在之前的文章中&#xff0c;我们介绍了如何登录机器人&#xff0c;如何实现上位机与下位机之间的互通&#xff0c;还介绍了机器人的topic和message&#xff0c;以及如何通过命令行对topic、message进行对应的操作。 接下来&#xff0c;我们就要运用前面所学的所有知识进行综合…...

【方法论】如何构建金字塔框架

文章目录 一、自上而下法1、5步法2、案例说明&#xff1a;基于自上而下法构建金字塔结构来优化写作逻辑 二、自下而上法1、 自下而上法的“三步走”策略步骤1&#xff1a;列出所有思想要点步骤2&#xff1a;找出逻辑关系&#xff08;因果或共性&#xff09;步骤3&#xff1a;得…...

Ubuntu 18.04设置静态IP的方法(图形化操作)

0 前言 当路由器启用了DHCP功能&#xff0c;每次启动虚拟机下的Ubuntu&#xff08;网络连接模式为桥接模式&#xff09;分配到的IP可能是不一样的&#xff0c;不方便使用和调试&#xff08;例如开发板加载镜像的主机IP地址也要跟着更改&#xff09;。针对这些问题&#xff0c;…...

第12章 Java多线程机制

12.1 进程与线程 4种状态&#xff1a;新建、运行、中断和死亡。 &#xff08;新建、运行、中断和死亡&#xff09; 建立线程的两种方法&#xff1a;用Thread类或其子类。 线程新建后&#xff0c;必须调用 start () 方法使其进入就绪队列&#xff0c;才有机会获得 CPU 资源&a…...

AM32电调学习解读八:无感驱动相位波形解析

这是第八篇&#xff0c;本篇主要是解读换相波形&#xff0c;方便理解代码。 1、无感驱动波形图 1&#xff09;ESC简图 2&#xff09;比较器接线图 灵动微 BLDC 电机方波控制中的反电动势过零检测介绍 - 大大通(简体站) 3&#xff09;未满duty波形 未满duty方便看出是高边驱…...

封装、继承、多态的理解

目录 1、封装 2、继承 3、多态 4、举例&#xff1a;计算机和外设 1、封装 封装是从使用者的角度&#xff0c;将某种复杂的事务&#xff0c;打包成一个整体&#xff0c;只对使用者提供方便使用的方式。 举例&#xff1a; 1> 胶囊&#xff1a;对于各种混合药物的封装 …...

使用vscode做python项目fastapi的开发

准备工作 安装必要软件 Python&#xff1a;确保安装 Python 3.8 或更高版本&#xff08;FastAPI 推荐&#xff09;。下载地址&#xff1a;https://www.python.org/downloads/ 验证安装&#xff1a; bash python --versionVS Code&#xff1a;下载并安装 VS Code&#xff1a;ht…...

多指标组合策略思路

一种基于多种技术指标和日历因素的综合交易策略&#xff0c;旨在通过复杂的条件判断来预测市场的短期走势&#xff0c;并据此进行买卖操作。 策略概述 该策略的核心思想是通过结合多个技术指标和日历因素来判断市场的短期趋势&#xff0c;并在合适的时机进行买入或卖出操作。 具…...

day29 python深入探索类装饰器

目录 一、类装饰器的初步理解 二、类装饰器与函数装饰器的对比 三、类装饰器的实现与应用 &#xff08;一&#xff09;为类添加日志功能 &#xff08;二&#xff09;动态方法绑定的两种方式 四、手动调用装饰器&#xff1a;类的“后天改造” 五、总结与展望 一、类装饰器…...

Rstudio换皮:自定义彩虹括号与缩进线

更换主题 Rstudio还是R语言最好用的IDE&#xff0c;默认的Rstudio已经自带了很多主题&#xff0c;可以自由选择。 更换内置主题 • 操作路径&#xff1a;Tools → Global Options → Appearance 在Editor Theme选项中切换主题&#xff0c;默认使用Textmate主题。RStudio提供…...

基于springboot+vue的车票管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat12开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;Maven3.3.9 系统展示 用户管理 班次时…...

计算机组成与体系结构:Snooping-Based Protocols(监听式协议)

目录 什么是监听式协议&#xff1f; Snooping 的总线模型 两种写策略&#xff1a;Write Update vs. Write Invalidate 1️⃣ Write-Invalidate&#xff08;写失效&#xff09; 2️⃣ Write-Update&#xff08;写更新&#xff09; &#x1f50d; 操作流程分析 &#x1f5…...

CSS 浮动(Float)及其应用

1. 什么是浮动&#xff08;Float&#xff09;&#xff1f; 浮动元素会脱离正常的文档流&#xff08;Document Flow&#xff09;&#xff0c;并向左或向右移动&#xff0c;直到碰到父元素的边缘或另一个浮动元素。 基本语法 .float-left {float: left; }.float-right {float:…...

离散文本表示

目录 一、离散文本表示的底层逻辑 二、One-hot 编码 &#xff08;一&#xff09;One-hot 编码的精妙机制 &#xff08;二&#xff09;One-hot 编码的优势与局限 三、词袋法&#xff08;Bag of Words&#xff09; &#xff08;一&#xff09;词袋法的核心思想 &#xff08…...

Python异常处理与OOP深度解析及实战案例

**导读&#xff1a;**在现代软件开发中&#xff0c;异常处理与面向对象编程&#xff08;OOP&#xff09;是构建健壮、可维护程序的两大基石。本文深入解析了 Python 中的异常处理机制和 OOP 编程的核心概念&#xff0c;并通过实战案例帮助你掌握这些技术的实际应用。 文章从异常…...

KnowCard:我的知识卡片生成器是怎么炼成的?

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 起心动念&#xff1a;我想做个“笔记神器” 有时候&#xff0c;看着笔记本里密密麻麻的学习要点&#xff0c;我…...

JAVA EE(进阶)_进阶的开端

别放弃浸透泪水的昨天&#xff0c;晨光已为明天掀开新篇 ——陳長生. ❀主页&#xff1a;陳長生.-CSDN博客❀ &#x1f4d5;上一篇&#xff1a;JAVA EE_HTTP-CSDN博客 1.什么是Java EE Java EE&#xff08;Java Pla…...

装甲PPT习题

装甲PPT习题 第一章 将 42.195 42.195 42.195&#xff0c; 0.0375551 0.0375551 0.0375551&#xff0c; 8.00033 8.00033 8.00033&#xff0c; 2.71828 2.71828 2.71828 按四舍五入写出上述各数具有四位有效数字的近似数。 考察三位有效数字重力加速度 g g g&#xff0c;若…...

EasyExcel动态表头

专家官方解答 &#xff1a; 在使用EasyExcel处理Excel动态表头的问题时&#xff0c;官方并不推荐使用includecolumnfieldnames方法。根据提供的知识内容&#xff0c;以下是如何实现动态表头的详细步骤和解释&#xff1a; 原因分析 动态表头的需求通常来源于希望根据用户的选…...

LoadBarWorks:一款赛博风加载动画生成器的构建旅程

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 项目缘起&#xff1a;赛博与实用的结合 在日常开发中&#xff0c;我经常需要为不同的项目添加加载动画&#x…...

跨平台多用户环境下PDF表单“序列号生成的服务器端方案“

在PDF表单处理中&#xff0c;经常需要为每个表单生成唯一的序列号或表单编号。当所有表单都在同一台计算机上由同一用户处理时&#xff0c;可以通过JavaScript将编号存储在另一个表单或全局JavaScript数据中来实现。然而&#xff0c;当需要在多台计算机或多个用户环境中使用时&…...

二:操作系统之进程控制块(PCB)

进程的身份证与状态记录&#xff1a;深入理解进程控制块 (PCB) 在我们之前的博客中&#xff0c;我们探讨了进程是什么——程序的一次执行实例&#xff0c;以及进程在其生命周期中会经历的各种状态&#xff08;新建、就绪、运行、等待、终止&#xff09;。我们知道&#xff0c;…...

创建型:原型模式

目录 1、核心思想 2、实现方式 2.1 基本结构 2.2 代码示例&#xff08;Java&#xff09; 3、适用场景 4、new与clone实际场景建议 1、核心思想 目的&#xff1a;通过复制&#xff08;克隆&#xff09;现有对象来创建新对象&#xff0c;而不是通过new关键字实例化。对于那…...

从c++到python

从c到python 前言printprint格式化print按原始格式输出 input变量、常量和数据类型整型和type()浮点型复数字符串类型数据类型转换变量地址 注释关键字容器列表list下标索引常用功能 元组tuple字符串str字符串的成员函数&#xff1a;字符串初始化为几个固定字符字符和int型数据…...

仿腾讯会议——房间界面用户设置

1、房间界面设置 2、 添加新设计师界面类 3、设置用户设置 4、添加新类&&设置房间标题 5、设置控件 6、修改用户展示头文件 7、 设置用户名 8、客户端添加用户展示 9、测试数据 10、成功截图...

Vue+Go 自定义打字素材的打字网站

Typing_Key_Board 这是一个基于Vue 3和Go语言的自定义素材打字练习网站&#xff0c;灵感来源于常用字打字练习&#xff0c;解决了大多数网站无法自定义打字素材的问题。在 Typing_Key_Board (简称TKB)中&#xff0c;用户可以自定义打字素材进行练习&#xff0c;在复习代码的同…...

生产级编排AI工作流套件:Flyte全面使用指南 — Data input/output

生产级编排AI工作流套件&#xff1a;Flyte全面使用指南 — Data input/output Flyte 是一个开源编排器&#xff0c;用于构建生产级数据和机器学习流水线。它以 Kubernetes 作为底层平台&#xff0c;注重可扩展性和可重复性。借助 Flyte&#xff0c;用户团队可以使用 Python SDK…...

JUC入门(二)

5、8锁现象&#xff1a;就是关于锁的八个问题 谁来充当锁&#xff1f;要锁的是什么东西&#xff1f;这个锁有什么用&#xff1f; 其实锁的作用就是&#xff1a;哪个线程先拿到锁&#xff0c;谁就有先执行同步方法的权力 那么谁能充当锁&#xff1f;任何对象都可以充当锁 要…...

深入浅出:CPU寻址方式完全指南(从理论到实践)

引言&#xff1a;为什么需要寻址方式&#xff1f; 当我们写下一行高级语言代码&#xff08;比如 int sum a b;&#xff09;&#xff0c;计算机底层是如何找到变量 a 和 b 的&#xff1f; 寻址方式&#xff08;Addressing Modes&#xff09; 就是 CPU 定位操作数的策略&#…...

PyQt5基本窗口控件(对话框类控件)

对话框类控件 QDialog 为了更好地实现人机交互&#xff0c;比如Windows及Linux等系统均会提供一系列的标 准对话框来完成特定场景下的功能&#xff0c;如选择字号大小、字体颜色等。在PyQt5中定 义了一系列的标准对话框类&#xff0c;让使用者能够方便和快捷地通过各个类完成…...

【PostgreSQL系列】PostgreSQL 复制参数详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

给easyui的textbox绑定回车事件

项目有一个textbox输入框&#xff0c;需要绑定一个回车搜索事件。 一开始想着&#xff0c;直接使用js的on或者jquery的keydown方法直接绑定&#xff0c;但是事件不生效。 $("#propName").textbox({width: 200,prompt: "请输入物品名称进行搜索" }).keydo…...

量子计算 | 量子密码学的挑战和机遇

量子计算在密码学中的应用现主要体现在对现有加密算法的威胁上。最著名的例子是Shor算法&#xff0c;该算法能够在多项式时间内分解大整数&#xff0c;从而威胁到基于大数分解的加密算法&#xff0c;如RSA加密。此外&#xff0c;量子计算还可以加速某些类型的密码分析&#xff…...

什么是着色器 Shader

本人就是图形学结课了&#xff0c;对 OpenGL着色器还有很多疑问嘿嘿 文章目录 为什么要有着色器vshaderfshader 本文围绕 vshader 和 fshader 代码示例讲解。 &#xff08;着色器代码取自本人简单OpenGL项目 https://github.com/DBWGLX/-OpenGL-3D-Lighting-and-Shadow-Modeli…...

STM32H562----------启动时钟分析

1、H562启动过程分析 1.1、启动模式 复位方式有三种:上电复位、硬件复位和软件复位。当产生复位后,离开复位状态后 CM33 内核做的第一件事就是 读取堆栈指针 MSP 的初始值及程序计数器指针 PC 的初始值: 1、从地址 0x0000 0000 处读取出堆栈指针 MSP 的初始值,该值即栈…...

MIT 6.S081 2020 Lab4 traps 个人全流程

零、写在前面 做之前可以看看Chapter 4&#xff1a;Traps and systems calls&#xff0c;了解XV6 下的陷入机制 https://pdos.csail.mit.edu/6.828/2020/xv6/book-riscv-rev1.pdf 这个实验旨在探索系统调用如何实现了trap&#xff0c;会先做一个有关栈的练习&#xff0c;然后…...

基于YOLOv8-OBB的旋转目标检测:从数据制作到自动标注完整指南

一、引言 目标检测作为计算机视觉中的核心任务&#xff0c;广泛应用于安防监控、自动驾驶、工业质检等场景。传统的目标检测方法多使用水平边界框&#xff08;HBB&#xff09;进行目标定位。然而在一些特殊应用场景&#xff08;如遥感图像、文本检测、PCB检测等&#xff09;中…...

【自然语言处理与大模型】向量数据库:Chroma使用指南

Chroma是一款功能强大的开源 AI 应用数据库&#xff0c;专为高效数据存储与检索而设计。它不仅支持 Embedding 和 Metadata 的存储&#xff0c;还集成了多项核心功能&#xff0c;包括向量搜索、全文搜索、Document 存储、Metadata 过滤以及多模态检索。此外&#xff0c;Chroma …...

一文掌握工业相机选型计算

目录 一、基本概念 1.1 物方和像方 1.2 工作距离和视场 1.3 放大倍率 1.4 相机芯片尺寸 二、公式计算 三、实例应用 一、基本概念 1.1 物方和像方 在光学领域&#xff0c;物方&#xff08;Object Space&#xff09;是与像方&#xff08;Image Space&#xff09;相对的…...

【周输入】510周阅读推荐-3

前文 【周输入】510周阅读推荐-1-CSDN博客 【周输入】510周阅读推荐-2-CSDN博客 本次推荐 目录 前文 本次推荐 算法技术 模型产品 算法技术 vLLM和DeepSpeed部署模型的优缺点_vllm deepspeed-CSDN博客 优点缺点总结vLLM 适用于推理 优化内存管理 高效并行化 功能单…...

机器学习(11)——xgboost

文章目录 1. 算法背景和动机1.1. 提升算法&#xff08;Boosting&#xff09;1.2. XGBoost的改进动机2. 算法基础 3. 核心创新3.4 稀疏感知算法 4. 系统优化4.1 列块(Column Block)4.2 缓存感知访问4.3 外存计算 5. 算法细节5.1 树生长策略5.2 特征重要性评估5.3 自定义目标函数…...

大语言模型上下文长度:发展历程、局限与技术突破

1. 引言&#xff1a;什么是上下文长度及其重要性 上下文长度&#xff08;Context Length&#xff09;&#xff0c;也称为上下文窗口&#xff08;Context Window&#xff09;&#xff0c;指的是大语言模型&#xff08;LLM&#xff09;在处理和生成文本时能够有效记忆和利用的信…...