位置: IT常识 - 正文

React Hook - useState函数的详细解析

编辑:rootadmin
React Hook - useState函数的详细解析 useState的详细解析

推荐整理分享React Hook - useState函数的详细解析,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

在上一篇文章中, 我用到useState来让大家体验一下hooks函数

import { memo, useState } from "react"const Counter2 = memo(() => { const [counter, setCounter] = useState(100) return ( <div> <h2>当前计数: {counter}</h2> <button onClick={() => setCounter(counter - 1)}>-1</button> <button onClick={() => setCounter(counter + 1)}>+1</button> </div> )})export default Counter2

那么接下来我们来先研究一下上面核心的一段代码代表什么意思

useState来自react,需要从react中导入,是一个hook函数, 官方中也将它成为State Hook, 它与class组件里面的 this.state 提供的功能完全相同;

一般来说,在函数退出后变量就会”消失”,而 state 中的变量会被 React 保留。

useState只有一个参数: 接收一个初始化状态的值(设置初始值),在第一次组件被调用时使用来作为初始化值(如果不设置则默认为undefined);

useState的返回值: 返回一个数组,数组包含两个元素;

元素一: 当前状态的值(第一次调用为初始化值);元素二: 是一个设置状态值变化的函数;不过我们如果总是使用索引来获取这两个元素总是不方便的, 因此在开发中我们通常是会对数组进行解构(当然要取什么名字是自定义的)例如上面代码: const [counter, setCounter] = useState(100)

上面代码中, 点击button按钮后,会完成两件事情:

调用元素二: setCounter,设置一个新的值;

组件重新渲染,并且根据新的值返回DOM结构;

React Hook - useState函数的详细解析

相信通过上面的一个简单案例,你已经会喜欢上Hook的使用了。

Hook 就是 JavaScript 函数,这个函数可以帮助你钩入(hook into) React State以及生命周期等特性;

但是使用它们会有两个额外的规则:

只能在函数组件的顶层调用 Hook。不能在循环语句、条件判断语句或者子函数中调用。

只能在 React 的函数组件和自定义hook中调用 Hook。不能在其他 JavaScript 函数中调用。

Tip

Hook 指的类似于useState、这样的某一个函数

Hooks 是对这一类函数的统称

大家可能有疑惑: 为什么叫 useState 而不叫 createState?

“create” 可能不是很准确,因为 state 只在组件首次渲染 的时候才会被创建。

在下一次重新渲染时,就已经不是创建了, useState 会返回给我们当前所保存的state(如果每次都创建新的变量,它就不是 “state”了)。

这也是 Hook 的名字总是以 use 开头的一个原因, 因为你总是在使用而不是创建。

当然,我们也可以在一个组件中定义多个变量和复杂变量(数组、对象)

import React, { memo, useState } from 'react'const App = memo(() => { // 简单数据 const [counter, setCounter] = useState(10) const [message, setMessage] = useState("Hello World") // 复杂数据 const [banners, setBanners] = useState(["aaa", "bbb", "ccc"]) const [infos, setInfos] = useState({ name: "chenyq", age: 18, height: 1.88 }) function changeNumber() { setCounter(counter + 1) } return ( <div> <h2>{counter}</h2> <button onClick={changeNumber}>+1</button> <h2>{message}</h2> <h2>{banners}</h2> <h2>{infos.name}-{infos.age}-{infos.height}</h2> </div> )})export default App
本文链接地址:https://www.jiuchutong.com/zhishi/300172.html 转载请保留说明!

上一篇:Vue —— watch和watchEffect的区别(vue watch和computed)

下一篇:OpenPCDet 训练自己的数据集详细教程!(opencv制作训练数据集)

  • 红米k50有没有无线充电(红米k50有没有无线快充)

    红米k50有没有无线充电(红米k50有没有无线快充)

  • 天猫精灵时间不准怎么调(天猫精灵时间不对怎么改)

    天猫精灵时间不准怎么调(天猫精灵时间不对怎么改)

  • vivo NEX 3s有几种颜色呢(vivo nex3 3s)

    vivo NEX 3s有几种颜色呢(vivo nex3 3s)

  • 微信提示音开着但不响是什么原因(微信提示音开着但不响苹果手机)

    微信提示音开着但不响是什么原因(微信提示音开着但不响苹果手机)

  • 修复聊天记录显示没有异常无需修复(修复聊天记录显示没有异常无需修复是什么意思)

    修复聊天记录显示没有异常无需修复(修复聊天记录显示没有异常无需修复是什么意思)

  • 华为mate30怎么分屏操作(华为mate30与mate30pro的区别)

    华为mate30怎么分屏操作(华为mate30与mate30pro的区别)

  • 公众号爆文作者是什么意思(公众号爆文作者木汁作品)

    公众号爆文作者是什么意思(公众号爆文作者木汁作品)

  • 自动筛选的条件为什么只能是一个(自动筛选的条件只能是一个高级筛选条件可以是多个)

    自动筛选的条件为什么只能是一个(自动筛选的条件只能是一个高级筛选条件可以是多个)

  • 移动王卡对微信免流吗(移动王卡微信视频聊天免流量吗)

    移动王卡对微信免流吗(移动王卡微信视频聊天免流量吗)

  • 钉钉作业历史老师能看到吗(钉钉作业历史版本)

    钉钉作业历史老师能看到吗(钉钉作业历史版本)

  • 小米6x充电电量不涨(小米6x充电到78就不动了)

    小米6x充电电量不涨(小米6x充电到78就不动了)

  • 商家好评返现违规吗(商家好评返现违规怎么办)

    商家好评返现违规吗(商家好评返现违规怎么办)

  • 分辨率720p是多少(分辨率720p是多少dpi)

    分辨率720p是多少(分辨率720p是多少dpi)

  • 红米k20pro屏幕刷新率(红米k20pro屏幕刷新率在哪里看)

    红米k20pro屏幕刷新率(红米k20pro屏幕刷新率在哪里看)

  • 信号源无信号是什么原因(信号源无信号是怎么回事)

    信号源无信号是什么原因(信号源无信号是怎么回事)

  • ipada1538什么型号(苹果ipada1538什么型号)

    ipada1538什么型号(苹果ipada1538什么型号)

  • 如何消除金立s9故事锁屏(金立s9桌面广告怎么去掉)

    如何消除金立s9故事锁屏(金立s9桌面广告怎么去掉)

  • 苹果手机需要清理内存吗(苹果手机需要清理软件缓存吗)

    苹果手机需要清理内存吗(苹果手机需要清理软件缓存吗)

  • 小米9可以反向充电吗(小米9反向充电可以给苹果充电吗)

    小米9可以反向充电吗(小米9反向充电可以给苹果充电吗)

  • 探探左划右划什么意思(探探左滑和右滑分别代表的是什么)

    探探左划右划什么意思(探探左滑和右滑分别代表的是什么)

  • 拼多多在哪里实名制(拼多多实名认证在哪)

    拼多多在哪里实名制(拼多多实名认证在哪)

  • y7000和y7000p的区别(y7000和y7000p哪个好)

    y7000和y7000p的区别(y7000和y7000p哪个好)

  • shotonmi8是什么手机(shotonmi8手机的样子)

    shotonmi8是什么手机(shotonmi8手机的样子)

  • findx有红外遥控吗(findx有没有红外遥控)

    findx有红外遥控吗(findx有没有红外遥控)

  • 手机人脸识别可以用照片吗(手机人脸识别可以用视频解锁吗)

    手机人脸识别可以用照片吗(手机人脸识别可以用视频解锁吗)

  • 在win10系统中,拨号连接怎么设置?(在win10系统中,如何限制孩子玩原神游戏)

    在win10系统中,拨号连接怎么设置?(在win10系统中,如何限制孩子玩原神游戏)

  • phpcms控制器不存在(phpcms程序)

    phpcms控制器不存在(phpcms程序)

  • 印花税和契税是什么意思?什么时候交?
  • 应收利息增加会计分录
  • 废品销售是否缴纳增值税
  • 技术维护费计入哪里
  • 出口退税是按照出口金额吗
  • 手机银行电子回单生成器
  • 空调属于电子设备还是电气设备
  • 金融业的企业
  • 共用的水电费支出怎么算
  • 固定资产的净收益和净损失怎么计算
  • 企业间借款利息怎么算
  • 税务局返还的个税手续费税率
  • 公司账户拨款工具有哪些
  • 供应商转让合同
  • 发票退回原因
  • 未开票收入如何申报增值税,下个月怎么操作
  • 减半征收企业所得税税率
  • 微信公众订阅号怎么注册
  • 海关进口增值税发票抵扣期限
  • 公会经费开具的法律依据
  • 起征点是什么意思举例子说明
  • 印刷制作费税收编码是啥
  • 外籍人士享受满五唯一吗
  • 广告宣传费可以抵扣进项税吗
  • 车船税交给谁了
  • 把十六点改成十五点半起床
  • 上年的费用本年能报销吗
  • 应付工资和实付工资的差额叫什么
  • 资产评估合同属于什么合同
  • 怎么认定是否为党员
  • php数组函数,选班长
  • 鸟瞰生长在森林中的植物
  • 超过认证错误限制
  • 灰狼算法的改进
  • 购买办公用品没收到发票怎么做账
  • thinkphp5框架介绍
  • ChatGPT遭禁用、抵制后又停止Plus付费发生了?
  • 魔改toolbox
  • php正则匹配网址
  • 增值税发票认证不了怎么回事
  • 管家婆软件如何做账
  • vue 动态tab
  • 库存商品用于研发要进项税额转出吗
  • 运输发票的抵扣期限
  • 旅行社的增值税税率
  • 收购公司款项的会计处理
  • 盈余公积企业所得税税率
  • 如何分析成本费用高
  • 以前年度损益调整怎么做账
  • 销售退回的会计分录全过程
  • 中小企业的资产负债率均值是多少
  • 外贸企业出口货物的计税依据
  • 项目回款是什么意思
  • 劳务派遣员工工会福利谁发放
  • 凭证扣除 28号
  • 如何用u盘装系统win10
  • win10一年更新一次
  • xp系统键盘按键错乱
  • u极速u盘装系统
  • 怎么调整桌面图标间距
  • debian怎么开启端口
  • win73d设置怎么设置
  • win7如何重装系统电脑
  • cocos2dx3.4 Menu
  • 博主是re_mini_scene
  • js闭包的应用
  • scrollWidth,clientWidth与offsetWidth的区别
  • jquery1.8
  • jQuery使用$.ajax进行异步刷新的方法(附demo下载)
  • nodejs搭建本地服务器运行html
  • 怎么查看u盘有没有传输过数据
  • vue router详解
  • shell脚本启动应用程序
  • python 数据结构 算法
  • javascript类定义
  • 小规模企业所得税怎么算
  • 新能源车异地购车
  • 垠坤集团是属于国企吗
  • 网上怎么变更
  • 建行代理贵金属签约
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设