React 中 useState 的 基礎使用

概念:useState 是一個React Hook(函數),它允許我們向組件添加狀態變量,從而影響組件的渲染結果。

本質:和普通JS變量不同的是,狀態變量一旦發生變化,組件的視圖UI也會跟著變化(數據驅動視圖)。react沒有雙向綁定,所以要使用useState,vue可以直接使用變量 就會雙向綁定。

// 用useState給組件添加狀態變量,以實現一個計數器按鈕
import { useState } from "react";function App() {//第一步,調用useState添加一個狀態變量//count是狀態變量,setCount是用來修改狀態變量的方法,其參數為狀態變量的初值const [count, setCount] = useState(0);//第二步,點擊事件調用setCount方法//作用:1、用傳入的新值修改count 2、重新用新的count渲染UIconst handleClick = () => {setCount(count + 1);};return (<div className="App"><button onClick={handleClick}>{ count }</button></div>);
}export default App;

修改狀態的規則

規則:在React中,狀態被認為是只讀的,我們應該始終替換它而不是修改它,直接修改狀態不能引發視圖更新。

?修改對象狀態

規則:對于對象類型的狀態變量,應該始終傳給set方法一個全新的對象來進行修改。

// 用useState給組件添加狀態變量,以實現一個計數器按鈕
import { useState } from "react";function App() {const [count, setCount] = useState(0);const handleClick = () => {setCount(count + 1);};//修改對象狀態const [form, setForm] = useState({name: 'jack'});const changeForm = () => {//setForm()函數會用新對象替換舊對象, 但是這里新對象相對于老對象只是修改了name屬性, 其他屬性保持不變//...是展開運算符, 用來把form對象的所有鍵值對展開到新對象中. 然后重新設置了name屬性setForm({...form, name: 'rose'});}return (<div className="App"><button onClick={handleClick}>{count}</button><button onClick={changeForm}>修改對象狀態 {form.name}</button></div>);
}export default App;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71318.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71318.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71318.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Html5學習教程,從入門到精通,HTML `<div>` 和 `<span>` 標簽:語法知識點與案例代碼(12)

HTML <div> 和 <span> 標簽&#xff1a;語法知識點與案例代碼 一、語法知識點 1. <div> 標簽 定義: <div> 是一個塊級元素&#xff0c;用于將文檔內容劃分為獨立的、可樣式化的部分。它本身沒有特定的語義&#xff0c;主要用于布局和分組。特點: 塊…

Hbase偽分布安裝教程,詳細版

注意Hbase版本與Hadoop版本的兼容&#xff0c;還有與JDK版本的兼容 本次用到的Hbase為2.4.6版本&#xff0c;Hadoop為3.1.3版本&#xff0c;JDK為JDK8 打開下面的網址查看兼容問題 Apache HBase Reference Guidehttps://hbase.apache.org/book.html#configuration 點擊基礎先…

Python項目】基于Python的圖像去霧算法研究和系統實現

Python項目】基于Python的圖像去霧算法研究和系統實現 技術簡介&#xff1a;采用Python技術、MYSQL數據庫等實現。 系統簡介&#xff1a;圖像去霧系統主要是基于暗通道先驗和逆深度估計技術的去霧算法&#xff0c;系統功能模塊分為&#xff08;1&#xff09;圖像上傳模塊&…

Stable Diffusion Prompt編寫規范詳解

Stable Diffusion Prompt編寫規范詳解 一、語法結構規范 &#xff08;一&#xff09;基礎模板框架 [質量強化] [主體特征] [環境氛圍] [風格控制] [鏡頭參數]質量強化&#xff1a;best quality, ultra detailed, 8k resolution?主體特征&#xff1a;(1girl:1.3), long …

勿以危小而為之勿以避率而不為

《故事匯之&#xff1a;所見/所聞/所歷/所想》&#xff1a;《公園散步與小雨遇記》&#xff08;二&#xff09; 就差一點到山頂了&#xff0c;路上碰到一阿姨&#xff0c;她說等會兒要下大雨了&#xff0c;讓我不要往上走了&#xff0c;我猶豫了一會兒&#xff0c;還是聽勸地返…

wheel_legged_genesis 開源項目復現與問題記錄

Reinforcement learning of wheel-legged robots based on Genesis System Requirements Ubuntu 20.04/22.04/24.04 python > 3.10 開始配置環境&#xff01; 點擊releases后進入&#xff0c;下載對應最新版本的代碼&#xff1a; 將下載后的代碼包解壓到你的自定義路徑下&…

Gin框架從入門到實戰:核心用法與最佳實踐

為什么選擇Gin框架&#xff1f; Gin 是一個基于 Go 語言的高性能 Web 框架&#xff0c;具備以下優勢&#xff1a; 輕量高效&#xff1a;底層依賴 net/http&#xff0c;性能接近原生。簡潔優雅&#xff1a;API 設計友好&#xff0c;支持路由分組、中間件鏈、參數綁定等特性。生…

Leetcode 3468. Find the Number of Copy Arrays

Leetcode 3468. Find the Number of Copy Arrays 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3468. Find the Number of Copy Arrays 1. 解題思路 這一題的話思路上就是一個范圍考察&#xff0c;顯然&#xff0c;對于指定的copy方式&#xff0c;只要我們確定了第一個元素&…

VirtualBox虛擬機MacOS從Big Sur升級到Sequoia(失敗)

VirtualBox虛擬機里安裝好Big Sur版本&#xff0c;嘗試升級到Sequoia&#xff0c;但是最終失敗了。 軟件升級 直接在系統偏好-軟件更新里可以看到提示&#xff0c;提示可以升級到15版本Sequoia 點擊同意&#xff0c;看能不能升級到Sequoia吧。升級前先用時光做了備份。 升級…

[雜學筆記]HTTP1.0和HTTP1.1區別、socket系列接口與TCP協議、傳輸長數據的時候考慮網絡問題、慢查詢如何優化、C++的垃圾回收機制

目錄 1.HTTP1.0和HTTP1.1區別 2.socket系列接口與TCP協議 3.傳輸長數據的時候考慮網絡問題 4.慢查詢如何優化 5.C的垃圾回收機制 1.HTTP1.0和HTTP1.1區別 在連接方式上&#xff0c;HTTP1.0默認采用的是短鏈接的方式&#xff0c;就建立一次通信&#xff0c;也就是說即使在…

ANI AGI ASI的區別

??ANI、?AGI、?ASI的區別主要體現在定義、特點和應用場景上?&#xff1a; 1. ANI&#xff08;狹義人工智能 Artificial narrow intelligence&#xff09;?&#xff1a; ?定義?&#xff1a;ANI&#xff0c;也被稱為弱人工智能&#xff0c;是指專門設計用于執行特定任務…

用OpenCV寫個視頻播放器可還行?(Python版)

引言 提到OpenCV&#xff0c;大家首先想到的可能是圖像處理、目標檢測&#xff0c;但你是否想過——用OpenCV實現一個帶進度條、倍速播放、暫停功能的視頻播放器&#xff1f;本文將通過一個實戰項目&#xff0c;帶你深入掌握OpenCV的視頻處理能力&#xff0c;并解鎖以下功能&a…

leetcode日記(77)子集Ⅱ

不知道為什么看到這道題就很頭痛…… 其實只要掌握nums不包含重復元素的情況下的代碼就行了。 若nums不能包含重復元素&#xff0c;那么使用回溯很容易就能寫出來&#xff1a; class Solution {void hs(vector<int> v,int x,vector<int> r,vector<vector<…

通俗版解釋:分布式和微服務就像開餐廳

一、分布式系統&#xff1a;把大廚房拆成多個小廚房 想象你開了一家超火爆的餐廳&#xff0c;但原來的廚房太小了&#xff1a; 問題&#xff1a;一個廚師要同時切菜、炒菜、烤面包&#xff0c;手忙腳亂還容易出錯。 解決方案&#xff1a; 拆分成多個小廚房&#xff08;分布式…

StarRocks-fe工程在Cursor中不能識別為Java項目

SR簡介 StarRocks 是一款高性能分析型數據庫&#xff0c;支持實時、多維度、高并發的數據分析。本指南旨在解決在使用 VSCode 或 Cursor 開發 StarRocks 后端項目時遇到的模塊識別問題。 問題描述 使用 Cursor 或 VSCode 打開 StarRocks 的后端工程 fe 時&#xff0c;spark-…

第五節:基于Winform框架的串口助手小項目---串口收發《C#編程》

“路漫漫其修遠兮&#xff0c;吾將上下而求索” &#xff0c; -----------------------WHAPPY 目標任務&#xff1a; 1 從本地設備列表獲取串口。 RegistryKey keyCom Registry.LocalMachine.OpenSubKey("Hardware\DeviceMap\SerialComm"); RegistryKey 是.NET 框…

專題二最大連續1的個數|||

1.題目 題目分析&#xff1a; 給一個數字k&#xff0c;可以把數組里的0改成1&#xff0c;但是只能改k次&#xff0c;然后該變得到的數組能找到最長的子串且都是1。 2.算法原理 這里不用真的把0變成1&#xff0c;因為改了比較麻煩&#xff0c;下次用就要改回成1&#xff0c;這…

25年第四本【認知覺醒】

《認知覺醒》&#xff1a;一場與大腦的深度談判 在信息爆炸的焦慮時代&#xff0c;我們像被拋入湍流的溺水者&#xff0c;拼命抓取各種自我提升的浮木&#xff0c;卻在知識的漩渦中越陷越深。這不是一本簡單的成功學指南&#xff0c;而是一場關于人類認知系統的深度對話&#…

甘特圖開發代碼(測試版)

場景&#xff1a;要實現的功能就是單行數據能左右拖動。 流程五個&#xff1a;ABCDE。&#xff08;對應&#xff1a;Charter開發、概念和計劃、初樣開發、正樣開發、驗證&#xff09; 1、A有開始時間&#xff0c;結束時間。B的開始時間必須是A的結束時間&#xff08;相等或者…

服務器配置-從0到分析4:ssh免密登入

該部分涉及到公鑰、私鑰等部分knowledge&#xff0c;本人僅作嘗試 若將本地機器 SSH Key 的公鑰放到遠程主機&#xff0c;就能無需密碼直接遠程登錄遠程主機 1&#xff0c;在客戶端生成 ssh 公私鑰&#xff1a; 也就是我們本地機器&#xff0c;windows電腦 一路回車即可&am…