React hooks文档笔记(四) useRef

这篇具有很好参考价值的文章主要介绍了React hooks文档笔记(四) useRef。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

useRef

当想让组件记住一些信息,又不想触发新的渲染,可以使用ref:总是返回同一个对象。

1. state 和 refs 的比较

refs(普通的 JavaScript 对象)

state

更改时不触发重新渲染

更改时触发重新渲染

可变的——修改/更新current’s value

(修改完立即生效

 ref.current = 5;

  console.log(ref.current); // 5

不可变——必须使用state的setting函数去修改state变量

React 状态的限制(每个渲染的快照,不会同步更新)

useRef(initialValue)  returns

{ current: initialValue }

useState(initialValue) returns ( [value, setValue])

每次更新state,组件会重新渲染

import { useState } from 'react';

export default function Counter() {
  const [count, setCount] = useState(0);
  function handleClick() {
    setCount(count + 1);
  }
  return (
    <button onClick={handleClick}>
      You clicked {count} times
    </button>
  );
}

React hooks文档笔记(四) useRef,react,react.js,笔记,javascript

 ref.current不要在渲染过程中读取或写入,组件不会随着每次ref增量而重新渲染:

import { useRef } from 'react';

export default function Counter() {
  let countRef = useRef(0);
  function handleClick() {
    // This doesn't re-render the component!
    countRef.current = countRef.current + 1;
  }
  return (
    <button onClick={handleClick}>
      You clicked {countRef.current} times
    </button>
  );
}

React hooks文档笔记(四) useRef,react,react.js,笔记,javascript

2. 常见使用场景

A. 存储timeout IDs

import { useRef } from 'react';

export default function Chat() {
  let timeoutID = useRef(null);

  function handleSend() {
    timeoutID.current = setTimeout(() => {
      alert('Sent!');
    }, 3000);
  }

  function handleUndo() {
    clearTimeout(timeoutID.current);
  }
}

B. 存储和操纵dom元素(避免更改由 React 管理的 DOM 节点)

  • 基础用法: <div ref={counterRef} />

  • 访问其他组件的dom节点:

import { forwardRef, useRef } from 'react';

const MyInput = forwardRef((props, ref) => {

//(可选)限制公开的内容,不让Form组件的ref调用处理其他事件(如修改css)
  const realInputRef = useRef(null);
  useImperativeHandle(ref, () => ({
    // Only expose focus and nothing else
    focus() {
      realInputRef.current.focus();
    },
  }));

  return <input {...props} ref={ref} />;
});

export default function Form() {
  const inputRef = useRef(null);

  function handleClick() {
    inputRef.current.focus();
  }

  return (
    <>
      <MyInput ref={inputRef} />
      <button onClick={handleClick}>
        Focus the input
      </button>
    </>
  );
}

 C. 存储其他对计算jsx非必要的对象文章来源地址https://www.toymoban.com/news/detail-517289.html

到了这里,关于React hooks文档笔记(四) useRef的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React18 hook学习笔记

    useState useState用于在函数组件中声明和管理状态 它接受初始状态,并返回一个状态变量和一个更新状态的函数 通过调用更新状态的函数,可以改变状态的值并触发组件的重新渲染 useEffect React的useEffect钩子可以让开发者在函数组件中管理副作用。 副作用操作是指那些与组件渲

    2024年02月14日
    浏览(39)
  • react中useRef的应用

    useRef是随着react函数式组件发展而来的,是react众多官方hook中的一个,调用useRef可以返回一个伴随这组件整个声明周期不发生改变的对象,这个对象常见的用途有两个: 用于绑定dom元素,从而实现对dom元素的操作 用于保存不希望随着组件重新渲染而改变的值,如定时器 我在

    2024年02月06日
    浏览(58)
  • [React] useRef用法和特性

    一般在使用react-hook的时候,我们用到最多的就是定义变量,以及对应的修改变量 下面是一个最基本的 react-hook 应用程序 以上并不是以使用useState的方式来进行对useRef的衬托,两者功能是不同的,只是便于区分 但是如果我想让浏览器渲染的时候,让他的次数自增,这样就会有

    2024年02月01日
    浏览(37)
  • 浅谈React中的ref和useRef

    目录 什么是useRef? 使用 ref 访问 DOM 元素 Ref和useRef之间的区别 Ref和useRef的使用案例 善用工具 结论 在各种  JavaScript  库和框架中, React  因其开发人员友好性和支持性而得到认可。 大多数开发人员发现  React  非常舒适且可扩展,因为它提供了钩子。钩子是  React  附带的

    2024年02月14日
    浏览(29)
  • ahooks.js:一款强大的React Hooks库及其API使用教程(四)

    ahooks是一款由阿里巴巴开发团队设计的React Hooks库,提供了一系列实用的React Hooks,以便开发者更好地使用React的功能。ahooks的设计原则是“最小API,最大自由”,旨在提供最小的、最易于理解和使用的API,同时保留最大的使用自由度。 使用npm或yarn安装ahooks: API介绍合集:

    2024年02月11日
    浏览(35)
  • ahooks.js:一款强大的React Hooks库及其API使用教程(二)

    ahooks是一款由阿里巴巴开发团队设计的React Hooks库,提供了一系列实用的React Hooks,以便开发者更好地使用React的功能。ahooks的设计原则是“最小API,最大自由”,旨在提供最小的、最易于理解和使用的API,同时保留最大的使用自由度。 使用npm或yarn安装ahooks: 前面的API:aho

    2024年02月12日
    浏览(30)
  • ahooks.js:一款强大的React Hooks库及其API使用教程(一)

    ahooks是一款由阿里巴巴开发团队设计的React Hooks库,提供了一系列实用的React Hooks,以便开发者更好地使用React的功能。ahooks的设计原则是“最小API,最大自由”,旨在提供最小的、最易于理解和使用的API,同时保留最大的使用自由度。 使用npm或yarn安装ahooks: 1. useRequest useR

    2024年02月12日
    浏览(32)
  • 3.react useRef使用与常见问题

    https://zh-hans.legacy.reactjs.org/docs/hooks-faq.html#why-am-i-seeing-stale-props-or-state-inside-my-function

    2024年02月12日
    浏览(43)
  • React钩子函数之useRef的基本使用

    React钩子函数中的useRef是一个非常有用的工具,它可以用来获取DOM元素或者保存一些变量。在这篇文章中,我们将会讨论useRef的基本使用。 首先,我们需要知道useRef是如何工作的。它返回一个可变的ref对象,这个对象可以在组件的整个生命周期中被访问。当我们需要获取DOM元

    2024年02月10日
    浏览(35)
  • 【实战】 TS 应用:JS神助攻 - 强类型 —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(三)

    学习内容来源:React + React Hook + TS 最佳实践-慕课网 相对原教程,我在学习开始时(2023.03)采用的是当前最新版本: 项 版本 react react-dom ^18.2.0 react-router react-router-dom ^6.11.2 antd ^4.24.8 @commitlint/cli @commitlint/config-conventional ^17.4.4 eslint-config-prettier ^8.6.0 husky ^8.0.3 lint-staged ^13.1.2 p

    2024年02月09日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包