前言
- useState的值在每个rernder中都是独立存在的。而useRef.current则更像是相对于render函数的一个全局变量,每次他会保持render的最新状态。
- useState值的更新会触发组件重新渲染,而useRef的current不会出发重渲染。
- useRef()钩不仅用于DOM引用。“ ref”对象是通用容器,其当前属性是可变的,并且可以保存任何值,类似于类的实例属性。
- 变量是决定视图图层渲染的变量,请使用useState,其他用途useRef
useRef特性:可变的ref对象,持久化
/**
* @description refstate
* @param {any} object 参数
* @returns {Array}
*/
function useRefState(object) {
const [value, setValue] = useState(object);
const ref = useRef(value);
useEffect(() => { ref.current = value; }, [value]);
const getValue = () => ref.current;
return [value, setValue, getValue];
}