因为 React.createRef() 每回返回的是不同的对象,不能保持引用
若把createRef写到全局,问题是,如果这个组件有两个,就会互相干扰这个ref,就会出问题啊
所以最好不要在函数组件中使用全局变量
所以才衍生出了useRef

useRef函数

  1. 一个参数,默认值
  2. 返回一个固定的对象,{current: xxx}
  3. 它的改变,包括它的current的改变,不会引起重新执行函数组件 ```jsx import React, {useState, useRef, useEffect} from ‘react’;

export default function App(){ const [n, setN] = useState(10); const nRef = useRef(n);//初始化{current: 10} useEffect(()=>{ const timer = setInterval(()=>{ nRef.current—; setN(nRef.current); if(nRef.current === 0){ clearInterval(timer); } }, 500);

  1. return ()=>{
  2. clearInterval(timer)
  3. }

}, []); return (

{n}

); } ``` 这样就解决了之前setInterval打印10个9的问题了,O(∩_∩)O哈哈~