位置: 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制作训练数据集)

  • 水货和行货是什么意思(水货和行货区别)(水货和行货的质量一样吗)

    水货和行货是什么意思(水货和行货区别)(水货和行货的质量一样吗)

  • qq的小世界怎么关闭(qq的小世界怎么永久删除)

    qq的小世界怎么关闭(qq的小世界怎么永久删除)

  • 苹果watch怎么连接华为手机(苹果watch怎么连接蜂窝数据)

    苹果watch怎么连接华为手机(苹果watch怎么连接蜂窝数据)

  • 快手看不到播放量(快手看不到播放量怎么回事)

    快手看不到播放量(快手看不到播放量怎么回事)

  • 快手如何取消关注(快手如何取消关注所有人)

    快手如何取消关注(快手如何取消关注所有人)

  • 常见的声音图像视频的压缩方法是(声音的图形)

    常见的声音图像视频的压缩方法是(声音的图形)

  • 华为屏幕录制播放怎么没有声音(华为屏幕录制播放声音)

    华为屏幕录制播放怎么没有声音(华为屏幕录制播放声音)

  • 苹果x怎样设置黑名单打不进电话来(苹果x怎样设置面容解锁)

    苹果x怎样设置黑名单打不进电话来(苹果x怎样设置面容解锁)

  • 京东催单有什么影响(京东催单处理流程)

    京东催单有什么影响(京东催单处理流程)

  • 小米10青春版多少hz(小米10青春版多少刷新率)

    小米10青春版多少hz(小米10青春版多少刷新率)

  • 显卡背板有什么用(显卡背板什么意思)

    显卡背板有什么用(显卡背板什么意思)

  • 固态坏了有办法修复吗(固态坏了有什么症状)

    固态坏了有办法修复吗(固态坏了有什么症状)

  • 华为手机换屏为什么电池也换(华为手机换屏为什么还要换电池)

    华为手机换屏为什么电池也换(华为手机换屏为什么还要换电池)

  • 手机能播放TF片吗(手机能播flv吗)

    手机能播放TF片吗(手机能播flv吗)

  • 苹果手机闹钟删除了还响(苹果手机闹钟删除了怎么还有闹钟)

    苹果手机闹钟删除了还响(苹果手机闹钟删除了怎么还有闹钟)

  • 微信勿扰模式不见了(微信勿扰模式不拉黑)

    微信勿扰模式不见了(微信勿扰模式不拉黑)

  • hd显卡是独立显卡吗(hd的显卡)

    hd显卡是独立显卡吗(hd的显卡)

  • 手机怎么取消QQ提示振动(手机怎么取消qq邮箱独立密码)

    手机怎么取消QQ提示振动(手机怎么取消qq邮箱独立密码)

  • 京东评价完了去哪里找(京东的评价能撤回吗)

    京东评价完了去哪里找(京东的评价能撤回吗)

  • 苹果xr4g信号经常断网怎么解决(苹果xr手机信号)

    苹果xr4g信号经常断网怎么解决(苹果xr手机信号)

  • 华为荣耀9x有人脸识别吗(华为荣耀9x手机)

    华为荣耀9x有人脸识别吗(华为荣耀9x手机)

  • 探探怎么申请退款流程(探探怎么申请退款VIP)

    探探怎么申请退款流程(探探怎么申请退款VIP)

  • gtx1660ti和2060的差距有多大

    gtx1660ti和2060的差距有多大

  • 拼多多助力在哪里(拼多多助力在哪看记录)

    拼多多助力在哪里(拼多多助力在哪看记录)

  • qq自定义封面怎么 取消(qq自定义封面怎么取消或是删除)

    qq自定义封面怎么 取消(qq自定义封面怎么取消或是删除)

  • 55寸电视耗电量一天多少度(55寸电视耗电量是多少瓦)

    55寸电视耗电量一天多少度(55寸电视耗电量是多少瓦)

  • iphonexsmax怎么开启录屏功能(iPhonexsmax怎么开关机)

    iphonexsmax怎么开启录屏功能(iPhonexsmax怎么开关机)

  • iwatch使用攻略

    iwatch使用攻略

  • 面对面快传怎么传视频(面对面快传怎么连接不上)

    面对面快传怎么传视频(面对面快传怎么连接不上)

  • 华为荣耀v10电池容量(华为荣耀v10电池多少钱)

    华为荣耀v10电池容量(华为荣耀v10电池多少钱)

  • 投资性房地产发生减值迹象均要计提减值准备
  • 邮寄文件快递费账务处理
  • 专票当普票用,发票勾选怎么操作
  • 单位支付给职工的一次性补助金怎么入账
  • 用人单位必须要有试用期吗
  • 企业支付个人借款利息要扣个税吗
  • 出口货物保险免税
  • 浙江金税三期个税下载
  • 开具正规发票和不开发票对企业纳税的影响有什么不同?
  • 小规模纳税人出售不动产征收率
  • 卖桶装水税率
  • 员工工作服计入劳保费吗
  • 金蝶资产减值损失取数计算公式
  • 当月费用下月付款
  • OS X Yosemite系统怎么样 OS X Yosemite功能介绍
  • PHP:mb_regex_set_options()的用法_mbstring函数
  • 联想笔记本在bios中怎么把图标和字变大
  • 深入php:面向对象、模式与实践
  • phpswoole面试
  • 峡谷的人
  • php数组操作函数
  • phpmailer 使用
  • php安装swoole扩展
  • wordpress添加css
  • vue设置背景图片透明度
  • 网络安全工具大全图片
  • es6箭头函数写法
  • 房产置换怎么做账务处理
  • 公司组织员工旅游费可以在税前扣除吗
  • 研发费用凭证是发票吗
  • 如何查看简易征信报告
  • 研发失败的费用允许加计扣除吗
  • 对象是类的实例,一个对象必须属于一个已知的类
  • Windows上PostgreSQL安装配置教程
  • 土石方费用入什么科目
  • 贴现模式怎么计算利息
  • 业务员奖金
  • 发票退票和废票的区别
  • sql server2012使用方法
  • 企业出售房屋
  • 个税返还款增值税税率
  • 无形资产是什么?
  • 租赁个人房屋租金怎么算
  • 包装物租金如何界定
  • 多交增值税退税抵欠怎么处理
  • 红冲去年的成本怎么做账
  • 管理人员的奖金可以索赔吗
  • 连锁药店成本会计
  • 无形资产内部研究开发支出的处理
  • 冲减上年度多计提所得税
  • 手工账月末结账步骤
  • 存货出售,资产减值损失如何处理
  • 残保金怎么办理
  • 企业为什么要设置仓库
  • sql server 用法
  • sql注入式攻击中单引号的作用
  • mysql8 递归
  • 获得sql数据库信息的方法
  • RedHat Linux5.5下Oracle 11g安装图解教程
  • dwm.exe占用内存过高怎么办
  • 影子系统作用
  • linux安装virsh
  • win7系统本地连接图标不见了
  • linux init.h
  • win10升级安装视频
  • combobox 添加选项
  • jquery源码分析笔记
  • AngularJs ng-change事件/指令的用法小结
  • jQuery实现ajax调用WCF服务的方法(附带demo下载)
  • shell正则表达式语法
  • Python性能优化指南
  • jquery.flot
  • 遍历字符串python
  • javascript中函数的作用域分为全局作用域
  • jquery不生效的原因
  • python mor
  • 北京市国家税务局电子税务局
  • 公共基础设施项目所得税优惠目录
  • 江苏税务如何绑定多家企业账户
  • 应交税金包含企业所得税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设