当前位置: 首页 > Web前端 > JavaScript

Hooks系列二:useState

时间:2023-03-27 11:31:05 JavaScript

快来加入我们吧!《小河山菜鸟》为前端开发者提供技术资料和系列基础文章。为了更好的用户体验,请移步我们的官网小河山菜鸟(https://xhs-rookies.com/)学习,及时获取最新文章。“代码裁缝”,如果您对我们的文章感兴趣,或者想提点建议,请关注“小河山菜鸟”微信公众号,与我们取得联系,您也可以在微信上观看我们的文章。每一个建议或认可,都是对我们莫大的鼓励!为什么要学习钩子在本文前言中,我们的主要目的是了解钩子状态(useState)的使用。useState定义了useState()来为函数组件引入状态。纯函数不能有状态,所以使用钩子来引入状态。如何使用useState使用下面的语句。const[count,setCount]=useState(defaultValue)//假设defaultValue为0letcountVariable=useState(0)letcount=countVariable[0]letsetCount=countVariable[1]setCount(count+1)//count1setCount(10)//计数10const[name,setName]=useState('xhs')const[age,setAge]=useState(18)const[dowhat,setDowhat]=useState({thing:'LearnHooks'})setName('xxxxxxxhs')setAge(20)setDowhat({thing:'LearnNothing'})importReact,{Component}from'react'import'./App.css'exportclassAppextendsComponent{constructor(props){super(props)this.state={count:0,}}handleWithAddOne(){this.setState({count:this.state.count+1})}handleWithAddTwo(){this.setState({count:this.state.count+2})}handleWithDecreaseOne(){this.setState({count:this.state.count-1})}render(){const{count}=this.statereturn(

现在,数量是{count}。{/*点击之后count+1*/}this.handleWithAddOne()}>点它,数字会相加1{/*点击之后count+2*/}this.handleWithAddTwo()}>点击它,数字会加2{/*点击之后count-1*/}this.handleWithDecreaseOne()}>点击它,num会减少1

)}}.app{位置:绝对;顶部:50%;左:50%;transform:translate(-50%,-50%);}.three-btn{显示:flex;flex-direction:column;}.button{高度:40px;边距:12px0px;白颜色;边框:无;border-radius:10px;}.add{background-color:#1890ff;}.decrease{bbackground-color:red;}多个useStates可以用来定义多个状态变量。useState返回一个数组,一般使用解构赋值取出两个值,state和一个修改状态的函数。这两个值需要成对获取。useState函数只需要传入一个唯一的参数作为默认值来初始化状态。现在,让我们总结一下useState。总结简单来说,useState就是为函数组件提供React状态的功能,现在可以称之为函数组件。在此之前,它被称为无状态组件。这样我们就成功使用了useState,运行结果和上面的类组件是一样的。代码的复杂度大大降低。与类组件相比,这种方式可能更容易让人接受。.import'./App.css'//导入css样式,样式同上import{useState}from'react'functionApp(){const[count,setCount]=useState(0)return(

现在,数字是{count}。

setCount(count+1)}>点击它,数字会加1setCount(count+2)}>点击它,数字会加2setCount(count-1)}>点击它,num会减少1
)}让我们完成需求:我们将stateValue,使用useState创建,使用setCount修改count的值。使用useState改写案例接下来我们看一下useState是如何实现的。从上面我们可以看出,虽然效果达到了我们的预期,但是我们可以明显感觉到它的代码非常的“重”。在我们实际的项目开发中,ReactApp由多个类组成,按照Layers,由层组成,其复杂程度可想而知。这时候,如果我们在添加Redux,就会变得更加复杂和繁琐。这是运行后效果图的css样式。首先,让我们来看看。在类组件中使用state的情况下,我们需要在state中声明变量count,并给它一个默认值0,修改它的唯一方法就是通过这个.setState()修改count。类组件使用this.state实现我想有一个简单的计数器,需要+1、+2、-1三个操作,可以刷新页面当前的数值。既然对useState有了一定的了解,那我们来完成一个需求:如何修改比较类组件的这些变量?如上,直接调用各自的set方法即可。上面的语句只能声明一个状态变量。如果要声明多个状态变量,只需要使用多个useState即可。第一次执行setCount使用多个状态变量后,值是从0->1,第二次执行时,直接传入一个10,它的值直接从1->10更新,所以的值count更新为10,修改state的值只需要直接使用setCount方法进行修改即可。传入的值会直接返回计数值并更新。如以下两个。修改状态就是使用useState返回一个数组,相当于下面的代码:返回一个数组,但是会被数组使用JavaScript语法分解为两个值,当前状态和修改函数状态。这个类似于类中的this.state.count和this.setState,唯一不同的是需要成对获取。useState返回一个值,该值定义了一个名为count的状态变量,它提供与类中的this.state完全相同的功能。一般来说,变量会在函数退出后“消失”,而状态中的变量会被React保留下来。useState做什么。useState唯一需要传入的参数就是初始化状态。我们可以传递各种类型的值,例如:数字、字符、数组、对象等。useState需要的参数在下一节进行预览。下一节,我们将为大家介绍useEffect,敬请期待!