React中useState的理解和使用案例
一、useState的作用
在函數(shù)組件中的
this指向
在react中是undefined
,使用useState可以使組件state狀態(tài)
, 并進行狀態(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)部當前狀態(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給當前的組件提供數(shù)據(jù) 相當于class組件 this.state={} import React,{useState} from 'react' // 一、 定義組件變量 // 參數(shù)一: 定義的變量 參數(shù)二:定義修改變量的方法 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. 函數(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í)行最后一次
//宏任務 直接渲染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. 函數(shù)組件的方法
import React, { useState } from 'react' // useState給當前的組件提供數(shù)據(jù) 相當于class組件 this.state={} export default function Demo() { // 一、 定義組件變量 // 參數(shù)一: 定義的變量 參數(shù)二:定義修改變量的方法 useState(0):初始值,相當于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ù) // //宏任務 直接渲染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> ) }
總結(jié)
到此這篇關于React中useState理解和使用案例的文章就介紹到這了,更多相關React useState使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
淺談react-router HashRouter和BrowserRouter的使用
本篇文章主要介紹了淺談react-router HashRouter和BrowserRouter的使用,具有一定的參考價值,有興趣的可以了解一下2017-12-12next-redux-wrapper使用細節(jié)及源碼分析
這篇文章主要為大家介紹了next-redux-wrapper使用細節(jié)及源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02D3.js(v3)+react 實現(xiàn)帶坐標與比例尺的柱形圖 (V3版本)
這篇文章主要介紹了D3.js(v3)+react 制作 一個帶坐標與比例尺的柱形圖 (V3版本) ,本文通過實例代碼文字相結(jié)合的形式給大家介紹的非常詳細,需要的朋友可以參考下2019-05-05