一、使用ref引用值
在react中ref
的主要用途是用来获取DOM元素或者某个组件实例的引用。当你想访问真实的DOM节点,或者需要在组件之间共享可变数据且不需要触发重新渲染时,通常会使用ref
。在vue中ref是响应式的,当数据发生改变时,相关的视图会自动更新。但在react中不是响应式的。
二、给组件添加 ref
可以通过从 React 导入 useRef
Hook 来为组件添加一个 ref:
javascript
import { useRef } from 'react';
在组件内,调用 useRef
Hook 并传入你想要引用的初始值作为唯一参数。例如,这里的 ref 引用的值是"0":
javascript
const ref = useRef(0);
useRef
返回一个这样的对象:
javascript
{
current: 0 // 你向 useRef 传入的值
}
你可以用 ref.current
属性访问该 ref 的当前值。这个值既可以读取它也可以写入它。
三、何时使用
- 存储和操作 DOM 元素
- 存储不需要被用来计算 JSX 的其他对象。
- 如果你的组件需要存储一些值,但不影响渲染逻辑,请选择 ref
四、使用实例
文本输入框获得焦点
javascript
import { useRef } from 'react';
export default function Form() {
const inputRef = useRef(null);
function handleClick() {
inputRef.current.focus();
}
return (
<>
<input ref={inputRef} />
<button onClick={handleClick}>
发布
</button>
</>
);
}
点击完发布按钮,输入框会获得焦点