react基礎語法,模板語法,ui渲染,jsx,useState狀態管理

創建一個react應用

這里使用create-react-app的腳手架構建項目(結構簡潔,基于webpack-cli),

npx create-react-app [項目名稱]

使用其他腳手架構建項目可以參考:react框架,使用vite和nextjs構建react項目_vite + react+js項目構建-CSDN博客

?

成功構建后只需要關注兩個部分,package.json中的script腳本,start:啟動項目

src中的核心文件,index.js: 引入react的依賴,? ?App.js:根組件

可以先去除多余的文件

index.js

import React from 'react'; // 引入React庫
import ReactDOM from 'react-dom/client'; // 引入ReactDOM庫
import App from './App'; // 引入App組件const root = ReactDOM.createRoot(document.getElementById('root')); // 創建根節點
root.render(// 嚴格模式,排錯<React.StrictMode><App /></React.StrictMode>
);

app.js


function App() {return (<div className="App"><h1>react基本語法</h1></div>);
}export default App;

以上是精簡后的文件目錄和文件內容,可以看出核心的引入庫為react和react-dom,整個框架也是完全基于js生成的

模板語法

模板語法就是在html結構中使用js變量渲染數據,

function App() {const title = '標題'return (<div className="App"><h1>react基本語法</h1><span>{title}</span></div>);
}export default App;

我們在App組件(函數)定義一個變量,并使用{}插入html結構中,{}的功能就是將html環境轉換成js環境?,

?出來再標簽外插值,還可以再標簽內設置屬性,最終都會變成html的結構

function App() {const title = '標題'const box = 'box'return (<div className="App"><h1>react基本語法</h1><span>{title}</span><div className={box} style={{width: '100px', height: '100px', backgroundColor: 'red'}}></div></div>);
}export default App;

組件渲染時要注意的幾點:

  • 一個組件中返回的html結構只能有一個外標簽,可以使用<div></div>,<></>,它們的區別是一個最終會被div包裹,一個則不會有任何標簽再外圈(template)
  • 對標簽元素設置類時使用className而不是class(防止和es6的class關鍵字搞混)
  • 插入對象時使用{{}},這表示{}中插入的時對象,最常用的就是style屬性

?列表渲染和條件渲染


function App() {const title = '標題'const box = 'box'const listData = [1, 2, 3, 4, 5]const list = listData.map(item=>(<li key={item}>{item}</li>))return (<div className="App"><h1>react基本語法</h1><span>{title}</span><div className={box} style={{width: '100px', height: '100px', backgroundColor: 'red'}}></div>{list}</div>);
}export default App;

使用數組中的數據進行列表循環渲染時,使用map方法,map方法有返回值,可以將html的結構返回出來直接插入到組件的渲染結構中(虛擬節點),

function App() {const title = '標題'const box = 'box'const listData = [1, 2, 3, 4, 5]const list = listData.map(item=>(<li key={item}>{item}</li>))let show = falselet content = <span>{show?'這是條件為真的內容':'這是條件為假的內容'}</span>return (<div className="App"><h1>react基本語法</h1><span>{title}</span><div className={box} style={{width: '100px', height: '100px', backgroundColor: 'red'}}></div>{list}{content}</div>);
}export default App;

當show為true和false時,span中的內容會相應發生改變,

可以看出在react中循環和條件都是基于原生js的方法實現的

jsx

????????jsx語法是js和XML結合的語法,它允許再js中使用類似Html的標簽元素作為值,類似于數字,字符串,要注意jsx的標簽并不是字符串,所以復制時不需要添加引號,同時使用return返回jsx的標簽時,要使用()包裹,因為不使用()js的語法會認為再return這一行函數就結束了,不會讀取到后續內容

let content = <span>{show?'這是條件為真的內容':'這是條件為假的內容'}</span>
 return (<div className="App"><h1>react基本語法</h1><span>{title}</span><div className={box} style={{width: '100px', height: '100px', backgroundColor: 'red'}}></div>{list}{content}</div>);

同時你也可以將文件改成jsx后綴,因為react集成了jsx語法,所以使用js也可以成功識別出jsx

狀態管理

這里用上了一個hooks鉤子函數 ,useState,

const [show, setShow] = useState(false)

它接受一個任意值,返回一個數組,里面包含一個由任意值生成的響應式變量,和這個響應式變量的修改方法,

比如上面修改的show變量,使用useState接受false布爾值,復制給show,同時生成setShow方法用來重新賦值show,因為show是只讀的不可被直接修改,

import { useState } from "react"function App() {const title = '標題'const box = 'box'const listData = [1, 2, 3, 4, 5]const list = listData.map(item=>(<li key={item}>{item}</li>))const [show, setShow] = useState(false)let content = <span>{show?'這是條件為真的內容':'這是條件為假的內容'}</span>function fn() {setShow(!show)}return (<div className="App"><h1>react基本語法</h1><span>{title}</span><div className={box} style={{width: '100px', height: '100px', backgroundColor: 'red'}}></div>{list}<button onClick={fn}>click</button>{content}</div>);
}export default App;

此時點擊按鈕,會改變文字內容

注意:onclick接受一個函數名或者函數體,接受函數名時不能帶括號,如果需要傳參應該寫成函數體的格式

 <button onClick={()=>fn()}>click</button>

到這里react的基本語法就全部展示完了

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

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

相關文章

數學建模國賽入門指南

文章目錄 認識數學建模及國賽認識數學建模什么是數學建模&#xff1f;數學建模比賽 國賽參賽規則、評獎原則如何評省、國獎評獎規則如何才能獲獎 國賽賽題分類及選題技巧國賽賽題特點賽題分類 國賽歷年題型及優秀論文數學建模分工技巧數模必備軟件數模資料文獻數據收集資料收集…

力扣題解(乘積為正數的最長子數組長度)

1567. 乘積為正數的最長子數組長度 已解答 中等 給你一個整數數組 nums &#xff0c;請你求出乘積為正數的最長子數組的長度。 一個數組的子數組是由原數組中零個或者更多個連續數字組成的數組。 請你返回乘積為正數的最長子數組長度。 本題要求乘積為正數&#xff0c;而整…

白蛇插畫:成都亞恒豐創教育科技有限公司

白蛇插畫&#xff1a;古韻今風&#xff0c;情深意長 在浩瀚的藝術長河中&#xff0c;插畫作為一種獨特的藝術形式&#xff0c;以其生動形象的畫面、豐富多彩的色彩和深邃悠遠的意境&#xff0c;成都亞恒豐創教育科技有限公司深受人們喜愛。而“白蛇插畫”&#xff0c;作為融合…

bug - while parsing file included at

bug 如下 找到這個對應文件tb_top.sv的對應行&#xff0c;發現是一個 include "inc_tb_tests_xxx.sv" 問題點&#xff1a;頭文件&#xff0c;重復定義&#xff0c;那么 解決方法- 在被include的文件首尾加入 ifndef MY_TRANSACTION__SV define MY_TRANSACTION__SV …

GenAI 技術堆棧架構師指南 - 十種工具

這篇文章于 2024 年 6 月 3 日首次出現在 The New Stack 上。 我之前寫過關于現代數據湖參考架構的文章&#xff0c;解決了每個企業面臨的挑戰——更多的數據、老化的Hadoop工具&#xff08;特別是HDFS&#xff09;以及對RESTful API&#xff08;S3&#xff09;和性能的更大需求…

《javascript語言精粹》學習筆記之函數特性

分析javascript javascript比較好的思想&#xff1a;函數、弱類型、動態對象、對象字面量表示法 不好的思想&#xff1a;基于全局變量的編程模型 函數 函數對象 函數就是對象&#xff0c;新創建的函數會連接到Function.prototype上&#xff0c;沒和函數創建時附帶有兩個隱藏…

前端--第一個前端程序

第一個前端程序 第一步&#xff1a; 使用記事本&#xff0c;編寫代碼 在你的一個磁盤里面創建一個文件夾&#xff0c;名為前端&#xff0c;然后在里面新建一個記事本&#xff0c;在里面寫如下代碼&#xff0c;注意一定要使用英文&#xff0c;然后把后綴名稱改為.html。 第二…

你明白C++中的多態嗎?(暑假提升-多態專題)

內不欺己&#xff0c;外不欺人。———孔子 有趣的多態 1、前言2、概念3、多態定義與產生條件4、多態的重要組成成員-(虛函數)5、虛函數的重寫(覆蓋)6、輔助關鍵字override與final(了解即可)7、重載&#xff0c;重定義(隱藏)&#xff0c;重寫(覆蓋)8、抽象類9、多態的原理9、1、…

PHP老照片修復文字識別圖像去霧一鍵摳圖微信小程序源碼

&#x1f50d;解鎖復古魅力&#xff0c;微信小程序黑科技大揭秘&#xff01;老照片修復&更多神奇功能等你來試&#xff01; &#x1f4f8; 【老照片修復&#xff0c;時光倒流的美顏術】 你是否珍藏著一堆泛黃的老照片&#xff0c;卻因歲月侵蝕而模糊不清&#xff1f;現在…

實驗02 黑盒測試(組合測試、場景法)

1. 組合測試用例設計技術 指出等價類劃分法和邊界值分析法通常假設輸入變量相互獨立&#xff0c;但實際情況中變量間可能存在關聯。全面測試&#xff1a;覆蓋所有輸入變量的所有可能組合&#xff0c;測試用例數量隨輸入變量的增加而指數增長。 全面測試需要對所有輸入的各個取…

2008年上半年軟件設計師【上午題】真題及答案

文章目錄 2008年上半年軟件設計師上午題--真題2008年上半年軟件設計師上午題--答案 2008年上半年軟件設計師上午題–真題 2008年上半年軟件設計師上午題–答案

按模版批量生成定制合同

提出問題 一個儀器設備采購公司&#xff0c;商品合同采購需要按模版生成的固定的文件&#xff0c;模板是固定的&#xff0c;只是每次需要替換信息&#xff0c;然后打印出來寄給客戶。 傳統方法 如果手工來做這個事情&#xff0c;準備好數據之后&#xff0c;需要從Excel表格中…

Qt5 Ubuntu18 QStackedWidget

1、在實際項目開發過程遇到&#xff0c;如果通過UI插件的屬性設置&#xff0c;通過對默認的兩個頁面進行提升需要切換操作的對象&#xff0c;如果該對象需要外部接口傳入數據&#xff0c;實現界面信息的實時刷新&#xff0c;這樣會失敗&#xff0c;失敗的原因很好理解&#xff…

Ubuntu安裝Pytorch3d

查看對應版本的pytorch3d https://anaconda.org/pytorch3d/pytorch3d/files?page2下載后保存到服務器上安裝 conda install pytorch3d-0.7.7-py310_cu118_pyt210.tar.bz2檢查是否安裝成功 python -c "from pytorch3d.io import load_ply" # Check for pytorch3d i…

高效應對網絡攻擊,威脅檢測響應(XDR)平臺如何提升企業應急響應能力

在數字化時代&#xff0c;企業面臨的網絡攻擊威脅持續增加&#xff0c;如惡意軟件、勒索軟件、釣魚攻擊、DDoS攻擊等。這些威脅不僅危及企業數據安全、系統穩定&#xff0c;還損害了品牌形象和市場信任。隨著云計算、大數據、物聯網的廣泛應用&#xff0c;企業網絡攻擊面擴大&a…

簡單分享下prettytable--快速制作表格

一、安裝&#xff1a; pip install prettytable 二、實例&#xff1a; from prettytable import PrettyTabletable PrettyTable()table.field_names ["學號", "姓名", "語文", "數學", "英語", "物理", "化…

MAVLink代碼生成-C#

一. 準備Windows下安裝環境 Python 3.3 – 官網鏈接下載Python future模塊 –pip3 install future TkInter (GUI 工具). – python for Windows自帶&#xff0c;無需下載環境變量PYTHONPATH必須包含mavlink存儲庫的目錄路徑。 –set PYTHONPATH你的mavlink源碼路徑 源碼下載在…

【昆工主辦|7月昆明】第三屆綠色建筑、土木工程與智慧城市國際會議(GBCESC 2024)

隨著全球城市化進程的加速&#xff0c;綠色建筑、土木工程與智慧城市等議題逐漸成為了行業內外關注的焦點。在這一背景下&#xff0c;第三屆綠色建筑、土木工程與智慧城市國際會議&#xff08;GBCESC 2024&#xff09;的召開&#xff0c;無疑將為相關領域的研究者、學者及從業者…

原理和組成

能力要素&#xff1a;&#xff08;1&#xff09;人員要素&#xff1a;“正確選人”。&#xff08;2&#xff09;過程要素&#xff1a;“正確做事”。&#xff08;3&#xff09;技術要素&#xff1a;“高效做事”。&#xff08;4&#xff09;資源要素&#xff1a;“保障做事”。…

【ARM】MDK-解決Flexnet服務的error:-13.66

【更多軟件使用問題請點擊億道電子官方網站】 1、 文檔目標 記錄MDK網絡版部署服務器error &#xff1a;-13.66的問題解決方案&#xff0c;后續有相關發現持續更新。 2、 問題場景 在客戶的服務器上部署Flexnet服務&#xff0c;將license文件檢查過后&#xff0c;確認MAC地址…