快速理解React钩子函数之useRef

主要作用

1.用来获取dom
  const inputRef = useRef(initValue);

useRef 返回一个可变的ref对象,它的.cuttent属性被初始化为传入的参数(initialValue)。返回的 ref 对象在组件的整个生命周期内持续存在。

如果你将 ref 对象以 <div ref={myRef} 形式传入组件,则无论该节点如何改变,React 都会将 ref 对象的 .current 属性设置为相应的 DOM 节点。

官方案例:

function TextInputWithFocusButton() {
  const inputEl = useRef(null);
  const onButtonClick = () => {
    // `current` 指向已挂载到 DOM 上的文本输入元素
    inputEl.current.focus();
  };
  return (
    <>
      <input ref={inputEl} type="text" />
      <button onClick={onButtonClick}>Focus the input</button>
    </>
  );
}
2.保存一些值
  • 注意点:变更 .current 属性不会引发组件重新渲染。
function TestUseRef() {
  const inputRef = useRef(null);
  const valueRef = useRef({ value: "0000" }); //用来储存值
  return (
    <div className="test-use-ref">
      {/* 以下显示一直是0000 ,因为.current属性的变更并不会使组件重新渲染 */}
      <div className="show-input-value">{valueRef.current.value}</div>
      <input
        ref={inputRef}
        onChange={() => {
          valueRef.current.value = inputRef.current.value; //存储的值变为 input输入的值
        }}
      />
    </div>
  );
}
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

godlike-icy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值