2021-04-12

useRef

定义

const refContainer = useRef(initialValue);
  • refContainer对象里会有个current属性,当更新current值时并不会re-render,这是与useState不同的地方
  • 更新useRef是side effect(副作用),所以一般写在useEffect或event handler里
  • useRef类似于类组件的this

为什么使用useRef

返回的 ref 对象在组件的整个生命周期内保持不变

  1. 示例1:
    由于每次渲染周期获取到的state数据都是本次的,而要达到跨渲染周期就需要采用useRef
    由于闭包,函数里的变量值为调用函数时对应的快照like值
import React, { useState } from "react";
const LikeButton: React.FC = () => {
	const [like, setLike] = useState(0)
	function handleAlertClick() {
		setTimeout(() => {
			alert(`you clicked on ${like}`) 
			//形成闭包,所以弹出来的是当时触发函数时的like值
		}, 3000)
	}
	return (
		<>
			<button onClick={() => setLike(like + 1)}>{like}赞</button>
			<button onClick={handleAlertClick}>Alert</button>
		</>
	)
}
export default LikeButton

useRef与createRef

上一篇:react中 函数式组件hook的使用


下一篇:react hook的学习(该篇只是为了下一篇关于jest对react hook的测试的基础)