useRef 和 useState 哪个更好?

简介: useRef 和 useState 哪个更好?

在这篇文章中,我们将学习 useRef 和 useState hook是什么,它们的区别以及何时使用哪个。 这篇文章中的代码示例将仅涉及功能组件,但是大多数差异和用途涵盖了类和功能组件

useState hook

useState 是一个内置的 React hook,它允许您将信息作为状态存储在变量中。它允许您将 React 状态添加到功能组件。在下面的示例中,useState()声明状态变量,而值存储在计数变量中。setCount是用于更新此值的函数。

//从 react 导入 useState
import React, { useState } from 'react';
function Count() {
  // 声明一个名为 count 的新状态变量
  const [count, setCount] = useState(0);

useRef hook

useRef hook 是一个内置的 React hook,它将一个参数或参数作为其初始值,并返回一个引用或持久化的可变值。此引用,或简称 ref,包含可以使用当前属性检索的值。

我们还可以将用户输入存储在 refs 中并显示收集到的数据,如下所示:

//导入 useRef hook
import React, { useRef } from "react"
export default function App() {
  //创建一个变量来存储引用
  const nameRef = useRef();
  function handleSubmit(e) {
    //防止页面在提交时重新加载
    e.preventDefault()
    //输出 name
    console.log(nameRef.current.value)
  }
  return (
    <div className="container">
      <form onSubmit={handleSubmit}>
        <div className="input_group">
          <label>Name</label>
          <input type="text" ref={nameRef}/>
        </div>
        <input type="submit"/>
      </form>
    </div>
  )
}

useRef 与 useState

  1. 与状态不同,存储在引用或引用中的数据或值保持不变,即使在组件重新渲染之后也是如此。因此,引用不会影响组件渲染,但状态会影响。
  2. useState 返回 2 个属性或一个数组。一个是值或状态,另一个是更新状态的函数。相比之下, useRef 只返回一个值,即实际存储的数据。
  3. 当参考值发生变化时,无需刷新或重新渲染即可更新。但是在 useState 中,组件必须再次渲染以更新状态或其值。

何时使用 Refs 和 States

refs 在获取用户输入、DOM 元素属性和存储不断更新的值时很有用。 但是,如果您要存储组件相关信息或在组件中使用方法,states 则是最佳选择。

所以总而言之,这两种 hook 各有优缺点,会根据情况和用途来使用。


目录
相关文章
|
2月前
|
前端开发 JavaScript
深入理解并实践React Hooks —— useEffect与useState
深入理解并实践React Hooks —— useEffect与useState
126 1
|
6月前
|
前端开发
React中useEffect、useCallBack、useLayoutEffect
React中useEffect、useCallBack、useLayoutEffect
|
14天前
|
存储 前端开发 JavaScript
React useState 和 useRef 的区别
本文介绍了 React 中 `useState` 和 `useRef` 这两个重要 Hook 的区别和使用场景。`useState` 用于管理状态并在状态变化时重新渲染组件,适用于表单输入、显示/隐藏组件、动态样式等场景。`useRef` 则用于在渲染之间保持可变值而不触发重新渲染,适用于访问 DOM 元素、存储定时器 ID 等场景。文章还提供了具体的代码示例,帮助读者更好地理解和应用这两个 Hook。
26 0
|
2月前
|
缓存 前端开发
React中函数式Hooks之memo、useCallback的使用以及useMemo、useCallback的区别
React中的`memo`是高阶组件,类似于类组件的`PureComponent`,用于避免不必要的渲染。`useCallback` Hook 用于缓存函数,避免在每次渲染时都创建新的函数实例。`memo`可以接收一个比较函数作为第二个参数,以确定是否需要重新渲染组件。`useMemo`用于缓存计算结果,避免重复计算。两者都可以用来优化性能,但适用场景不同:`memo`用于组件,`useMemo`和`useCallback`用于值和函数的缓存。
69 1
|
2月前
|
存储 前端开发 JavaScript
react的useRef用什么作用
react的useRef用什么作用
33 1
|
4月前
|
前端开发 JavaScript 数据格式
react18【系列实用教程】Hooks (useState,useReducer,useRef,useEffect,useContext,useMemo,useCallback,自定义 Hook )
react18【系列实用教程】Hooks (useState,useReducer,useRef,useEffect,useContext,useMemo,useCallback,自定义 Hook )
86 1
|
6月前
|
前端开发 JavaScript
React中的状态管理:useState与useReducer的使用与探讨
【4月更文挑战第25天】本文探讨了React中构建动态界面的关键——状态管理,重点关注`useState`和`useReducer` Hook。`useState`适用于简单状态管理,例如计数器,而`useReducer`在处理复杂逻辑和多个状态更新时更具优势,提供更好的组织和可维护性。选择使用哪个取决于状态逻辑复杂度、可维护性和性能需求。合理运用这两个工具能实现高效、可维护的React应用。
|
6月前
|
存储 前端开发 JavaScript
React Hooks实战:从useState到useContext深度解析
React Hooks 深度解析:useState用于函数组件的状态管理,通过初始化和更新状态实现渲染控制;useContext则提供跨组件数据传递。useState的状态更新是异步的,不支持浅比较,可结合useEffect处理副作用。useContext在多层组件间共享状态,但可能导致不必要的渲染。两者结合可创建复杂应用场景,如带主题切换的计数器。了解其工作原理和优化策略,能有效提升React应用性能。
88 0
|
6月前
|
前端开发 JavaScript
useState和useReducer的区别?
useState和useReducer的区别?
106 0
|
6月前
|
缓存 前端开发 JavaScript
React.Memo和useMemo的区别?
React.Memo和useMemo的区别?
172 0