react中useRef的作用

以前我对useRef的使用印象好像只有在表单中经常用到,今天系统的整理了一下useRef

 

 敲重点!!! 用useRef设定的值改变 是不会引发组件重新渲染的,useState才会
接下来主要来说说useRef的几个作用吧
1:用useRef获取React JSX中的DOM元素,获取后你就可以控制DOM的任何东西了 比如控制dom聚焦 给dom赋值

复制代码
 1 demo1:  这段代码的实现的功能就是点击button按钮将input框里输入的值展示到p标签内。
 2 import React, { useState, useRef } from "react";
 3 function App() {
 4   let [name, setName] = useState("Nate");
 5   let nameRef = useRef(); // 这里就是获取ref绑定的那个DOM元素值
 6   const submitButton = () => {
 7     setName(nameRef.current.value);     / 这里用setName设置name值时,是把input框里的输入值传入进去
 8   };
 9   return (
10     <div className="App">
11       <p>{name}</p>
12  
13       <div>
14         <input ref={nameRef} type="text" />     / 这里的ref就是获取了这个input输入框,利用ref.current就可以获取这个DOM节点
15         <button type="button" onClick={submitButton}>
16           Submit
17         </button>
18       </div>
19     </div>
20   );
21 }
22 =====================================================================
23 demo2: 使用 useRef 创建的变量指向一个 input 元素,点击按钮后使 input 聚焦
24   function TextInputWithFocusButton() {
25   const inputEl = useRef(null);
26   const onButtonClick = () => {
27     // `current` 指向已挂载到 DOM 上的文本输入元素
28     inputEl.current.focus();
29   };
30   return (
31     <>
32       <input ref={inputEl} type="text" />
33       <button onClick={onButtonClick}>Focus the input</button>
34     </>
35   );
36 }
复制代码

 

2:用useRef来保存变量,注意:useRef 每次都会返回相同的引用  useRef保存变量的好处就是  .current会拿到最新的 不会像useState 有时候会拿不到最新的

复制代码
 1 demo1: 利用useRef保存值
 2 import React, { useRef, memo } from 'react';
 3 const InnerTable = memo(function (props) {
 4 const queryRef = useRef({
 5         invoiceCode: '',
 6         invoiceNumber: '',
 7     });
 8   
 9   
10   return (
11   <input  onChange={(e)=>{queryRef.current.invoiceCode=e.target.value}} placeholder="请输入发票代码"> </input>
12      <input  onChange={(e)=>{queryRef.current.invoiceNumber=e.target.value}} placeholder="请输入发票号码"> </input>
13   )
14 })
复制代码

 

posted @   沁霓  阅读(359)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示