JavaScript中的useRef 和 useState介绍

目录
  • 1、useState hook
  • 2、useRef hook
  • 3、useRef 与 useState
  • 4、何时使用 Refs 和 States

1、useState hook

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

//从 react 导入 useState

import React, { useState } from 'react';

function Count() {

  // 声明一个名为 count 的新状态变量

  const [count, setCount] = useState(0);

2、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>

  )

}

3、useRef 与 useState

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

4、何时使用 Refs 和 States

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

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

到此这篇关于 JavaScript中的useRef useState介绍的文章就介绍到这了,更多相关 JavaScript中的useRef useState内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • React中useRef的具体使用

    相信有过React使用经验的人对ref都会熟悉,它可以用来获取组件实例对象或者是DOM对象. 而useRef这个hooks函数,除了传统的用法之外,它还可以"跨渲染周期"保存数据. 首先来看一下它传统的用法: import React, { useState, useEffect, useMemo, useRef } from 'react'; export default function App(props){ const [count, setCount] = useState(

  • 示例详解react中useState的用法

    useState useState 通过在函数组件里调用它来给组件添加一些内部 state.React 会在重复渲染时保留这个 state.useState 会返回一对值:当前状态和一个让你更新它的函数,你可以在事件处理函数中或其他一些地方调用这个函数.它类似 class 组件的 this.setState,但是它不会把新的 state 和旧的 state 进行合并. 接下来通过一个示例来看看怎么使用 useState. 有这么一个需求:需要在 iframe 中加载外部网页. 初始的代码我们通过

  • JavaScript中的useRef 和 useState介绍

    目录 1.useState hook 2.useRef hook 3.useRef 与 useState 4.何时使用 Refs 和 States 1.useState hook useState 是一个内置的 React hook,它允许您将信息作为状态存储在变量中.它允许您将 React 状态添加到功能组件.在下面的示例中,useState()声明状态变量,而值存储在计数变量中.setCount是用于更新此值的函数. //从 react 导入 useState import React, {

  • JavaScript中setter和getter方法介绍

    javascript中的setter.getter是平时接触比较少的方法,其本身也并不是标准方法,只在非ie浏览器里支持(ie内核也许有其他方法可以做到呢?暂时不知其解),但是加以利用可以做许多事情,比如: 1.对数据的访问限制: a.value是对value变量的getter方法调用,如果在getter方法实现中抛出异常,可以阻止对value变量的访问 2.对dom变量进行监听: window.name是一个跨域非常好用的dom属性(大名鼎鼎,详见百度),如果覆盖window.name的set

  • 基于JavaScript中标识符的命名规则介绍

    JavaScript中的标识符的命名有以下规则: 由字母.数字.$._组成 以字母.$._开头 不可以使用保留字!!! 要有意义!!!!!!! 标识符的命名规范: 1.驼峰命名法 除标识符的第一个单词外,其余单词的首字母大写,例如:trueName 2.蛇型命名法 单词之间用_隔开,例如:true_name (注:大多数情况下,以1~2个下划线开始的标识符,代表特殊变量或内部变量,我们在自己定义的时候,尽量避免使用以下划线开头的变量) (粗浅的见解,望批评指正) 以上这篇基于JavaScript

  • JavaScript中document.activeELement焦点元素介绍

    目录 1.默认焦点在body 2.文本框手动获取焦点 3.通过focus获取焦点 4.tab切换焦点 5.document.hasFocus()判断是否获取焦点 前言: 有时需要获取页面焦点在哪个元素上,通过焦点可以判断用户是否在操作页面等信息.以前不太方便,要自己记录,html5增加了document.activeElement属性可以获取到当前激活的焦点. 1.默认焦点在body 页面加载后,document.activeElement是在body上: console.log(documen

  • JavaScript中的return语句简单介绍

    return语句在js中非常的重要,不仅仅具有返回函数值的功能,还具有一些特殊的用法,下面就结合实例简单介绍一下return语句的作用. 一.用来返回控制和函数结果: 通常情况,return语句对于一个函数是很有必要的,因为往往需要函数在一系列的代码执行后会得到一个期望的返回值,而此值就是通过return语句返回,并且将控制权返回给主调函数. 语法格式: return 表达式 代码实例如下: function add(){ var a=1; var b=2; return a+b; } func

  • JavaScript中的property和attribute介绍

    首先看看这两个单词的英文释义(来自有道词典).先是property: 复制代码 代码如下: property ['prɔpəti] n. 性质,性能:财产:所有权 英英释义: any area set aside for a particular purpose "the president was concerned about the property across from the White House" 同义词:place something owned; any tangi

  • javascript中10个正则表达式使用介绍基础篇

    在 JavaScript 中,正则表达式通常用于两个字符串方法 : search() 和 replace(). search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置. replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 1.匹配模式 正则表达式查找与模式匹配的字符串部分 在JavaScript中,它们是在正斜杠之间//或使用new RegExp() 例如: var str = "Visi

  • JavaScript中的类(Class)详细介绍

    在JavaScript中,可以使用类(Class)来实现面向对象编程(Object Oriented Programming).不过,JavaScript中的类与Java中的有所不同,其相应的定义和使用也不一样. JavaScript中类的定义 在JavaScript中,所有从同一个原型对象(prototype)处衍生出来的对象组成了一个类:也就是说,JavaScript中的类是一个对象集合的概念,如果两个对象它们的prototype相同,那么它们就属于同一个类:JavaScript中的类甚至都

  • JavaScript中的Primitive对象封装介绍

    JavaScript中,string.number.boolean均为primitive基本类型,也即字符串.数值.布尔值并不是以对象的形式而存在的.不过,由于需要对这三种primitive类型值进行操作,因此JavaScript会自动封装这三种类型的值,使其作为对象而拥有属性与方法.以string为例,这种封装过程如下: 1.当JavaScript遇到对string值进行属性访问或者方法调用时,会调用new String(字符串值)自动将该string封装成一个String对象. 2.Java

  • JavaScript中的DSL元编程介绍

    在看JavaScript Template源码的时候,发现有一个很有意思的用法用来生成函数,想到这不就是元编程么? JavaScript 元编程 复制代码 代码如下: 元编程(Metaprogramming)是指某类计算机程序的编写,这类计算机程序编写或者操纵其他程序(或者自身)作为它们的数据,或者在运行时完成部分本应在编译时完成的工作. JavaScript eval 复制代码 代码如下: eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 可以有下面的用法: 复

随机推荐