React中useState的理解和使用案例
作者:0yizhiyang
Hook是React16.8的新增特性,它可以让你在不编写class的情况下使用state以及其他的React特性,本文中讲解的useState就是React中的其中一个Hook,这篇文章主要给大家介绍了关于React中useState理解和使用的相关资料,需要的朋友可以参考下
一、useState的作用
在函数组件中的
this指向
在react中是undefined
,使用useState可以使组件state状态
, 并进行状态数据的读写操作作用:给函数组件提供数据
语法:
useState()说明:const [xxx, setXxx] = React.useState(initValue)
setXxx()2种写法:
- 参数(initValue): 第一次初始化指定的值在内部作缓存
- 返回值([xxx, setXxx]): 包含2个元素的数组, 第1个为内部当前状态值, 第2个为更新状态值的函数
- setXxx(newValue): 参数为非函数值, 直接指定新的状态值, 内部用其覆盖原来的状态值
- setXxx(value => newValue): 参数为函数, 接收原本的状态值, 返回新的状态值, 内部用其覆盖原来的状态值
二、useState的使用
1. 定义组件变量
// useState给当前的组件提供数据 相当于class组件 this.state={} import React,{useState} from 'react' // 一、 定义组件变量 // 参数一: 定义的变量 参数二:定义修改变量的方法 useState(0):初始值,相当于num=10 const [count, setState] = useState(0) const [name, setName] = useState('tome')
2. 使用变量{变量名称}
{/* 二、使用变量{变量名称} */} <h2>当前求和为:{count}</h2> <button onClick={add}>点我+1</button> <br /> <h2>我的名字是:{name}</h2> <button onClick={changeName}>点我改名</button>
3. 函数修改state数据 合并操作,执行最后一次
// 三、函数修改state数据 合并操作,执行最后一次 function add(){ // setState(count+1) //第一种写法: 对值直接操作 setState(count => count+1) //第二种写法:回调函数 } const changeName = () => { // 定义变量--定义修改的方法 setName('jack') }
4. 合并操作 执行最后一次
//宏任务 直接渲染4 setTimeout(()=>{ setState(count+4) },0) //微任务 直接打印 5 Promise.resolve().then(res => { setState(count + 5) })
三、案例分析
1. 类组件的方法
import React, { Component } from 'react' export default class Demo extends Component { state = { count: 1 } add = () =>{ this.setState( state => ({count:state.count+1})) } render() { return ( <div> <h1>当前求和为:{this.state.count}</h1> <button onClick={this.add}>点我+1</button> </div> ) } }
3. 函数组件的方法
import React, { useState } from 'react' // useState给当前的组件提供数据 相当于class组件 this.state={} export default function Demo() { // 一、 定义组件变量 // 参数一: 定义的变量 参数二:定义修改变量的方法 useState(0):初始值,相当于num=10 const [count, setState] = useState(0) const [name, setName] = useState('tome') // 三、函数修改state数据 合并操作,执行最后一次 function add() { // setState(count+1) //第一种写法: 对值直接操作 setState(count => count + 1) //第二种写法:回调函数 // //宏任务 直接渲染4 // setTimeout(()=>{ // setState(count+4) // },0) // //微任务 直接打印 5 // Promise.resolve().then(res => { // setState(count + 5) // }) } const changeName = () => { // 定义变量--定义修改的方法 setName('jack') } return ( <div> {/* 二、使用变量{变量名称} */} <h2>当前求和为:{count}</h2> <button onClick={add}>点我+1</button> <br /> <h2>我的名字是:{name}</h2> <button onClick={changeName}>点我改名</button> </div> ) }
总结
到此这篇关于React中useState理解和使用案例的文章就介绍到这了,更多相关React useState使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!