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

  • 一般纳税人公账转法人私账
  • 增值税专用发票抵扣最新规定
  • 用友t6会计科目在哪里找
  • 企业将要购买一套房产
  • 什么企业符合加计扣除的条件
  • 电子税务局申报的财务报表在哪里查询
  • 付境外公司佣金怎么做账
  • 税局函调准备哪些资料
  • 会计准则体系包括会计制度吗
  • 员工自己领取社保卡需要带什么资料
  • 接受捐赠的增值税计入利润总额吗
  • 工程违约金收入如何入账
  • 企业购买扶贫物资怎么入账
  • 企业利息收入的税率是多少
  • 支付税点怎么做账
  • 子公司员工向母公司申请党员
  • 住房公积金如何在手机上提取
  • 业务招待费扣除计算举例说明
  • 关于工商年检社保的通知
  • 如何处理走逃失的人
  • 普票丢失的最新处理2019
  • 收派服务发票需交税吗
  • 竹笋属于什么税目类别
  • 个体户财务负责人风险有哪些
  • 报销差旅费必须要车票吗
  • 未成立工会组织情况说明
  • 物业预收的物业费怎么做会计分录?
  • mac怎么还原出厂设置
  • 在win10系统中,如何限制孩子玩原神游戏
  • 收到发票如何写摘要
  • 出口押汇算贷款吗
  • thinkphp操作数据库
  • php调用图片
  • php pdo oracle
  • 收到现金股利会影响利润吗
  • 印克斯湖国家公园中的德克萨斯矢车菊,德克萨斯州 (© Inge Johnsson/Alamy)
  • 动力和燃料的区别
  • 以前年度进项转出分录
  • 微信h5页面设计
  • vue富文本编辑器移动端
  • java基础笔试题在线考
  • java异常编程题
  • 帝国cms怎么上传图片
  • 刷题笔贴吧
  • 小型微利企业税收
  • 货已入库进项发票未到怎么办
  • 一直暂估原材料有什么风险
  • 用于职工福利的固定资产折旧
  • 长期待摊费用借方负数什么意思
  • 结转上年
  • 出差补贴费计入什么科目
  • 汇算清缴时发现收入少了
  • 内账会计有法律风险吗
  • 个体户怎么开对公账户
  • 其他应付什么意思
  • 土地补偿费怎么算
  • 应收账款多记账怎么做调整分录
  • 递延所得税会计处理全过程
  • 建筑业外包工程包括哪些
  • 工程进度开票如何入账
  • 纳税申报怎么查
  • 固定资产标准提高是政策变更吗
  • 建账是啥意思
  • MySQL使用select语句查询指定表中指定列(字段)的数据
  • windows开始搜索栏
  • win7旗舰版系统激活码
  • linux中添加用户和组的操作
  • windows使用linux软件
  • spool.exe - spool是什么进程
  • 如何在ubuntu上安装软件
  • Mac系统修复怎么进入
  • win8 ui
  • win7系统安装office
  • surface使用
  • node_modules复制
  • javascript零基础入门
  • 江苏国税网上勾选平台
  • 国税纳税服务有哪些项目
  • 四川地方税务 副局长 晓宏
  • 大宗物流服务平台
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设