React——useRef()

useRef 是 React 的一个 Hook,用于在组件的整个生命周期内持久化保存数据。主要有以下几个用途:

  1. 存储对 DOM 节点的引用:通过给 DOM 元素添加 ref 属性来直接访问实际的 DOM 节点。这常用于需要直接操作 DOM 时,比如管理焦点、文本选择或媒体播放。

    示例代码:

function TextInputWithFocusButton() {
   const inputEl = useRef(null);
   
   const onButtonClick = () => {
     // `current` 指向挂载到 `input` 元素的真实 DOM 节点
     inputEl.current.focus();
   };
   
   return (
     <>
       <input ref={inputEl} type="text" />
       <button onClick={onButtonClick}>Focus the input</button>
     </>
   );
 }
  1. 保存组件状态跨渲染周期不变的数据useRef 返回的对象在组件的整个生命周期内保持不变,可以用来保存任何可变值。与实例属性类似,当你想要保存不需触发视图重新渲染的数据时,可以使用 useRef

    示例代码:

function TimerComponent() {
    const intervalRef = useRef();
    
    useEffect(() => {
      const id = setInterval(() => {
        // ...每隔一段时间执行的操作...
      }, 1000);
      intervalRef.current = id;
      return () => clearInterval(intervalRef.current);
    }, []);
    
    // ...
  }
  1. 追踪组件是否已经挂载或卸载:有时我们需要知道组件是否仍然挂载在 DOM 上,以避免在异步操作(如 API 调用)完成后调用 setState 导致的潜在错误。

    示例代码:

function MyComponent() {
    const isMountedRef = useRef(true);
    
    useEffect(() => {
      return () => {
        // 组件卸载时更新 ref 的值
        isMountedRef.current = false;
      };
    }, []);
    
    // 使用 isMountedRef.current 确认组件是否挂载
  }
  1. 作为实例变量:对于需要存储任何可变值而又不想导致组件重新渲染的场景非常有用。因为 useRef 创建的是一个普通 JavaScript 对象,其 .current 属性被初始化为传入的参数(useRef 的初始值),这个值可以自由更改。

总结来说,useRef 主要用于访问 DOM 节点、保存可变数据和跟踪组件挂载状态,且对它所保存的数据的修改不会触发组件的重新渲染。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值