React中useState的理解和使用案例
一、useState的作用
在函數(shù)組件中的
this指向在react中是undefined,使用useState可以使組件state狀態(tài), 并進(jìn)行狀態(tài)數(shù)據(jù)的讀寫操作作用:給函數(shù)組件提供數(shù)據(jù)
語法:
useState()說明:const [xxx, setXxx] = React.useState(initValue)setXxx()2種寫法:
- 參數(shù)(initValue): 第一次初始化指定的值在內(nèi)部作緩存
- 返回值([xxx, setXxx]): 包含2個元素的數(shù)組, 第1個為內(nèi)部當(dāng)前狀態(tài)值, 第2個為更新狀態(tài)值的函數(shù)
- setXxx(newValue): 參數(shù)為非函數(shù)值, 直接指定新的狀態(tài)值, 內(nèi)部用其覆蓋原來的狀態(tài)值
- setXxx(value => newValue): 參數(shù)為函數(shù), 接收原本的狀態(tài)值, 返回新的狀態(tài)值, 內(nèi)部用其覆蓋原來的狀態(tài)值
二、useState的使用
1. 定義組件變量
// useState給當(dāng)前的組件提供數(shù)據(jù) 相當(dāng)于class組件 this.state={}
import React,{useState} from 'react'
// 一、 定義組件變量
// 參數(shù)一: 定義的變量 參數(shù)二:定義修改變量的方法 useState(0):初始值,相當(dāng)于num=10
const [count, setState] = useState(0)
const [name, setName] = useState('tome')
2. 使用變量{變量名稱}
{/* 二、使用變量{變量名稱} */}
<h2>當(dāng)前求和為:{count}</h2>
<button onClick={add}>點我+1</button> <br />
<h2>我的名字是:{name}</h2>
<button onClick={changeName}>點我改名</button>
3. 函數(shù)修改state數(shù)據(jù) 合并操作,執(zhí)行最后一次
// 三、函數(shù)修改state數(shù)據(jù) 合并操作,執(zhí)行最后一次
function add(){
// setState(count+1) //第一種寫法: 對值直接操作
setState(count => count+1) //第二種寫法:回調(diào)函數(shù)
}
const changeName = () => {
// 定義變量--定義修改的方法
setName('jack')
}
4. 合并操作 執(zhí)行最后一次
//宏任務(wù) 直接渲染4
setTimeout(()=>{
setState(count+4)
},0)
//微任務(wù) 直接打印 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>當(dāng)前求和為:{this.state.count}</h1>
<button onClick={this.add}>點我+1</button>
</div>
)
}
}

3. 函數(shù)組件的方法
import React, { useState } from 'react'
// useState給當(dāng)前的組件提供數(shù)據(jù) 相當(dāng)于class組件 this.state={}
export default function Demo() {
// 一、 定義組件變量
// 參數(shù)一: 定義的變量 參數(shù)二:定義修改變量的方法 useState(0):初始值,相當(dāng)于num=10
const [count, setState] = useState(0)
const [name, setName] = useState('tome')
// 三、函數(shù)修改state數(shù)據(jù) 合并操作,執(zhí)行最后一次
function add() {
// setState(count+1) //第一種寫法: 對值直接操作
setState(count => count + 1) //第二種寫法:回調(diào)函數(shù)
// //宏任務(wù) 直接渲染4
// setTimeout(()=>{
// setState(count+4)
// },0)
// //微任務(wù) 直接打印 5
// Promise.resolve().then(res => {
// setState(count + 5)
// })
}
const changeName = () => {
// 定義變量--定義修改的方法
setName('jack')
}
return (
<div>
{/* 二、使用變量{變量名稱} */}
<h2>當(dāng)前求和為:{count}</h2>
<button onClick={add}>點我+1</button> <br />
<h2>我的名字是:{name}</h2>
<button onClick={changeName}>點我改名</button>
</div>
)
}

總結(jié)
到此這篇關(guān)于React中useState理解和使用案例的文章就介紹到這了,更多相關(guān)React useState使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談react-router HashRouter和BrowserRouter的使用
本篇文章主要介紹了淺談react-router HashRouter和BrowserRouter的使用,具有一定的參考價值,有興趣的可以了解一下2017-12-12
next-redux-wrapper使用細(xì)節(jié)及源碼分析
這篇文章主要為大家介紹了next-redux-wrapper使用細(xì)節(jié)及源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
基于react框架使用的一些細(xì)節(jié)要點的思考
下面小編就為大家?guī)硪黄趓eact框架使用的一些細(xì)節(jié)要點的思考。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
關(guān)于react-router-dom路由入門教程
這篇文章主要介紹了關(guān)于react-router-dom路由入門教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
D3.js(v3)+react 實現(xiàn)帶坐標(biāo)與比例尺的柱形圖 (V3版本)
這篇文章主要介紹了D3.js(v3)+react 制作 一個帶坐標(biāo)與比例尺的柱形圖 (V3版本) ,本文通過實例代碼文字相結(jié)合的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2019-05-05

