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

  • 没有原始凭证怎么补税
  • 保险经纪公司要取得什么证
  • 红字发票盖章吗
  • 企业转让固定资产使用权的收益应当属于
  • 小企业准则固定资产折旧每月折旧多折了
  • 子公司固定资产移到母公司
  • 应交房产税通过应交税费核算吗
  • 多缴纳的附加税怎么退
  • 纳税评估怎么办
  • 从银行取现回单怎么取
  • 纳税人如何办理纳税申报
  • 收到餐饮费发票会计分录
  • 白蚁防治费计入什么科目
  • 2020年最新增值税租车费
  • 三证合一对纳税有影响吗
  • 非独立核算的门市部增值税
  • 财务软件利润表没显示
  • 调整期初数怎么做会计分录
  • 来料加工进料加工是免税的吗?
  • 房产税发票可以抵扣吗
  • 劳务报酬和个人工资的区别
  • 红冲的普通发票要给对方吗
  • 消费税如何避税计算
  • 合同成本对应科目
  • 支付设备定金会退回吗
  • 应收账款转营业外收入怎么写申请
  • 外贸综合服务企业代办退税
  • 如何在win7系统中查看电脑基本信息
  • 接入设备检测
  • windows7部分的更新安装失败怎么办?
  • kb4577266补丁
  • 预交税款分录
  • 土豆发芽了能吃吗有没有毒
  • ac1203路由器
  • word下划线怎么延长
  • 残保金计入税金及附加合理吗
  • 浅谈php中类和对象的区别
  • chatGPT身份指令
  • 教育费附加免税需要计提吗?
  • 公允价值变动损益
  • 没有发票的费用汇算清缴的时候怎么调出来
  • mysqlbinlog -vvv
  • 应付职工薪酬期末余额是什么意思
  • 以发行股票作为对价取得企业的股权
  • 汽车保险费计入应付账款还是其他应付款
  • 开民工工资专户函模板
  • 公司活动举办属于哪个部门
  • 汇算清缴银行手续费放哪里
  • 企业盘亏的原因怎么写
  • 资产负债表的作用体现在哪些方面
  • 车辆检验收费
  • 客户给的现金如何转到公司账上
  • 确认应付职工薪酬如何计算
  • 赠品视同销售价格如何确定?
  • 房地产开发土地使用税如何计算
  • 去年未开票收入未申报
  • 客运运价杂费收据填写例题
  • sql判断是否存在记录
  • 对于微软用户来说,为了防止计算机意外故障
  • 简述操作系统更新设置方法
  • Windows 2003作中转VPN服务器多路由共享上网的方法
  • windows地图导航
  • windows8无线网络选项消失不见
  • lhotkey.exe
  • hottray.exe是什么进程 有什么作用 hottray进程查询
  • nipc什么意思
  • 网卡被禁用一启动就死机
  • win10电脑补丁 kb5000802
  • ubuntu安装指南
  • 系统时间错乱如何使用NTP进行系统时间调整
  • shell脚本数字运算
  • jquery form表单
  • 我吐槽你
  • python获取数据包
  • unity 动态生成模型
  • 换电脑了税控盘怎么办
  • 宁夏到新疆多少公里?
  • 四川省网上税务局怎么登录
  • 网上增值税发票验旧
  • 税务稽查立案标准金额
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设