React?Hooks的useState、useRef使用小結(jié)
React Hooks 是 React 16.8 版本引入的新特性,它允許你在不編寫 class 的情況下使用 state 和其他 React 特性。其中,useState 和 useRef 是兩個常用的 Hooks。
1. useState
useState 是一個允許你在函數(shù)組件中添加 state 的 Hook。
使用說明:
useState返回一個狀態(tài)變量和一個設(shè)置該變量的函數(shù)。- 如果傳遞給
useState的初始值是undefined,則返回的狀態(tài)變量初始值為undefined。 - 你可以在組件的任何地方調(diào)用
useState,但通常建議在組件的頂層調(diào)用它。
代碼示例:
import React, { useState } from "react"
import { Button } from 'antd';
const IndexPage: React.FC = () => {
console.log("視圖更新");
/**
* useState 唯一的參數(shù)就是初始 state 沒有參數(shù)時為 undefined
* useState()會返回一個數(shù)組
* 索引0 useState傳入的參數(shù)
* 索引1 改變索引0的值并刷新視圖 setObj是一個方法 參數(shù)為需要改變的值
* 我們可以按照需要使用數(shù)字或字符串對其進(jìn)行賦值,而不一定是對象
**/
const [obj, setObj] = useState({ count: 0 })
const setCount = (obj: any) => {
obj.count++
// 當(dāng)useState創(chuàng)建一個引用類型的變量時 setObj的內(nèi)存地址與obj內(nèi)存地址相同時useState不會更新視圖
// setObj(obj) // 不會更新視圖
setObj({ ...obj }) // 會更新視圖
console.log(obj);
}
return (
<div>
{obj.count}
<br />
<Button onClick={() => setCount(obj)}>count+1</Button>
</div>
);
}
export default IndexPage2. useRef
useRef 是一個可以存儲任意數(shù)據(jù)類型的不可變(只讀)引用(比如一個 DOM 元素或一個 React 組件)。ref 是一個響應(yīng)式的引用,這意味著即使它的調(diào)用點(diǎn)沒有發(fā)生改變,它的指向也會隨著組件渲染而更新。
使用說明:
useRef返回一個可變的 ref 對象,其.current屬性被初始化為傳遞的參數(shù)(或undefined)。.current的值在組件的整個生命周期內(nèi)保持不變。- ref 對象在組件的整個生命周期內(nèi)保持不變。
代碼示例:
import React, { useRef } from "react"
import { Button } from 'antd';
const IndexPage: React.FC = () => {
// useRef() 有一個參數(shù)為初始值
const ref = useRef(1)
console.log(ref);
return (
<div ref={ref}>
</div>
);
}
export default IndexPage到此這篇關(guān)于React Hooks的useState、useRef使用小結(jié)的文章就介紹到這了,更多相關(guān)React Hooks useState、useRef 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解React中傳入組件的props改變時更新組件的幾種實(shí)現(xiàn)方法
這篇文章主要介紹了詳解React中傳入組件的props改變時更新組件的幾種實(shí)現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09
React無限滾動插件react-infinite-scroll-component的配置優(yōu)化技巧
react-infinite-scroll-component是React無限滾動插件,簡化滾動加載邏輯,支持自定義提示和觸發(fā)距離,兼容移動端,體積小巧,適用于列表、聊天等場景,需結(jié)合虛擬滾動優(yōu)化性能,本文介紹React無限滾動插件react-infinite-scroll-component的配置+優(yōu)化,感興趣的朋友一起看看吧2025-09-09
React如何使用refresh_token實(shí)現(xiàn)無感刷新頁面
本文主要介紹了React如何使用refresh_token實(shí)現(xiàn)無感刷新頁面,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
深入對比三種主流的React狀態(tài)管理方案(Redux?Toolkit?vs?Zustand?vs?Contex
在現(xiàn)代React開發(fā)中,狀態(tài)管理是構(gòu)建復(fù)雜應(yīng)用程序的核心挑戰(zhàn)之一,本文將深入對比三種主流的React狀態(tài)管理方案,Redux?Toolkit、Zustand和Context?API,希望對大家有所幫助2025-09-09
React Native中NavigatorIOS組件的簡單使用詳解
這篇文章主要介紹了React Native中NavigatorIOS組件的簡單使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
詳解react-router如何實(shí)現(xiàn)按需加載
本篇文章主要介紹了react-router如何實(shí)現(xiàn)按需加載,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06

