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

  • 腾讯课堂怎么确定自己关麦(腾讯课堂怎么确认签到)

    腾讯课堂怎么确定自己关麦(腾讯课堂怎么确认签到)

  • 小米8se有什么颜色(小米8se好不好用,有什么优缺点)

    小米8se有什么颜色(小米8se好不好用,有什么优缺点)

  • 不知道单号知道手机号怎么查快递(不知道单号知道手机号怎么查快递极兔)

    不知道单号知道手机号怎么查快递(不知道单号知道手机号怎么查快递极兔)

  • 三年的qq聊天记录能恢复吗(三年的qq聊天记录删除了怎么恢复回来)

    三年的qq聊天记录能恢复吗(三年的qq聊天记录删除了怎么恢复回来)

  • oppoa92s有红外线吗(oppoa92s手机有没有红外线遥控功能)

    oppoa92s有红外线吗(oppoa92s手机有没有红外线遥控功能)

  • 怎样查微信聊天记录(怎样查微信聊天记录日期)

    怎样查微信聊天记录(怎样查微信聊天记录日期)

  • b站实名认证有什么用(b站实名认证有什么影响)

    b站实名认证有什么用(b站实名认证有什么影响)

  • 荣耀v206+128和8+128区别(荣耀v206+128参数)

    荣耀v206+128和8+128区别(荣耀v206+128参数)

  • ps安装不了怎么回事(ps安装不上是怎么回事)

    ps安装不了怎么回事(ps安装不上是怎么回事)

  • 蓝屏代码0x000003b解决(蓝屏代码0X0000003B)

    蓝屏代码0x000003b解决(蓝屏代码0X0000003B)

  • 华为gt2时尚版和运动版区别

    华为gt2时尚版和运动版区别

  • 微博怎么注销账号(微博怎么注销账号才能成功)

    微博怎么注销账号(微博怎么注销账号才能成功)

  • 酷我音乐怎么录歌(酷我音乐怎么录音发到微信上)

    酷我音乐怎么录歌(酷我音乐怎么录音发到微信上)

  • 什么软件可以消除美颜(什么软件可以消除照片多余的人)

    什么软件可以消除美颜(什么软件可以消除照片多余的人)

  • 摄像头红外线伤眼睛吗(摄像机红外线对人体有伤害吗)

    摄像头红外线伤眼睛吗(摄像机红外线对人体有伤害吗)

  • word默认字体怎么设置(word默认字体怎么改成宋体)

    word默认字体怎么设置(word默认字体怎么改成宋体)

  • 抖音头饰在哪里(抖音头饰怎么获得)

    抖音头饰在哪里(抖音头饰怎么获得)

  • 探探怎么删除头像(探探怎么删除头像照片)

    探探怎么删除头像(探探怎么删除头像照片)

  • 怎么看三天可见朋友圈(怎么看三天可见是不是对自己设置的隐私)

    怎么看三天可见朋友圈(怎么看三天可见是不是对自己设置的隐私)

  • 3700x上市时间(3700x什么时候出的)

    3700x上市时间(3700x什么时候出的)

  • 实况照片怎么变成视频(实况照片怎么变成动态表情包)

    实况照片怎么变成视频(实况照片怎么变成动态表情包)

  • 企业邮箱app怎么开发(企业邮箱app怎么查看已发送邮件)

    企业邮箱app怎么开发(企业邮箱app怎么查看已发送邮件)

  • qq屏蔽对方还能收到消息吗(QQ屏蔽对方还能发消息吗)

    qq屏蔽对方还能收到消息吗(QQ屏蔽对方还能发消息吗)

  • Win11更新卡在开机界面怎么办?解决Win11更新卡在开机界面的办法(win11更新卡主)

    Win11更新卡在开机界面怎么办?解决Win11更新卡在开机界面的办法(win11更新卡主)

  • JavaScript控制元素(标签)的显示与隐藏(javascript控制语句)

    JavaScript控制元素(标签)的显示与隐藏(javascript控制语句)

  • 怎样理解一般纳税人
  • 出租设备的租金收入记入( )账户
  • 做账报税简单吗
  • 所得税费用税前扣除项目
  • 企业股东分红怎么交税
  • 财务负责人如何解绑
  • 计提房产税要含税吗
  • 四种股利分配政策类型
  • 测试收入的钱怎么用
  • 电子发票冲红后算金额吗?
  • 支付招标代理费需要哪些资料
  • 专用基金计入什么科目
  • 房地产企业销售额排名
  • 小规模纳税人购置税控设备
  • 支付利息的诉讼请求
  • 补交以前年度印花税记到哪个会计科目
  • 年终销售返利怎么算
  • 期初未交增值税借方余额
  • 交强险和车船税必须一起交吗
  • 建筑业企业所得税2%
  • 商会会费收入要交所得税吗
  • 分期付款股权转让
  • 固定资产停止折扣
  • 机票进项税额怎么申报
  • 股东净利润是什么
  • 筹办期间的筹办费用支出
  • 个人挂靠公司按揭购车账务怎么处理?
  • 社会保险生育险能报多少
  • 企业出售自用汽车
  • 股东个人财产转让流程
  • php中数组的常用函数及用法
  • 如何网络测试
  • 修改远程桌面端口脚本
  • PHP:zip_close()的用法_Zip函数
  • 哪些费用可以在开办费中列支
  • php将数字转为字符串
  • 劳务报酬所得的计税标准
  • 办公用品开发票有哪些
  • 莱达尔湖, 英格兰坎布里亚郡湖区 (© Tranquillian1/iStock/Getty Images Plus)
  • 基于thinkphp的cms
  • 为什么税前利润加可抵扣暂时性差异
  • 小规模负数发票怎么申报增值税
  • lama羊驼
  • 什么叫web渗透测试
  • thinkphp自动加载类
  • 增值税 转出
  • 织梦如何添加浮动广告
  • c语言中函数的数据类型是指
  • 废料收入是什么会计分录
  • 房地产企业土地增值税清算
  • 合并报表问题
  • 外购商品用于赠送进项税可以抵扣吗
  • 不动产计提折旧时间
  • 固定资产的进项税额可以一次性抵扣吗
  • 出租写字楼写字楼
  • 一般纳税人弱电包工包料怎么开票
  • 科目余额表没有本年累计怎么办
  • 单位购入车辆能抵扣吗
  • 建账的基本步骤
  • 总分类账户与明细分类账户的关系
  • windows server vista
  • steam游戏支持的手柄
  • win7快速安装
  • winxp刻录光盘步骤
  • Mac如何使用Excel
  • windows10x预览版
  • windows 10预览版
  • perl中@_
  • 实现每个星期的计划英语
  • python time模块日期运算
  • 使用筷子就餐会不会传染乙肝病毒
  • python网络爬虫总结
  • js调用声音
  • windows安装程序安装在哪里
  • 进入杭州车辆怎么申请
  • 建筑业发票范围
  • 天津住房公积金管理中心官网
  • 电子发票查询官方
  • 襄城是现在的哪个城市
  • 查询产品真伪怎么查询app
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设