React中組件通訊與插槽

一、為DOM組件設置Props

1.用JSX語法對標簽的類名進行設置屬性名是className;

2.用JSX語法對標簽的樣式進行設置要使用鍵值對進行設置,帶“-”時用小駝峰方法來書寫;

3.當一個標簽的屬性過多時,可以通過JSX語法進行展開設置;


function App() {const imgData = {src: "https://tse4-mm.cn.bing.net/th/id/OIP-C.umAQs2BlpaAaJt5OJ66ljAHaIr?rs=1&pid=ImgDetMain",alt: "星極天下第一",className: "image",style: {height: 100,border: "1px solid red",padding: "10px",backgroundColor: "yellow"}}return (<><img {...imgData} /></>)
}export default App

效果:

二、自定義React組件設置Props


interface ArticleModel {title: string;content: string;active: boolean;
}function Article (props: ArticleModel) {return (<div><h2>{props.title}</h2><p>{props.content}</p><p>狀態:{props.active ? '已發布' : '未發布'}</p></div>)
}function App() {const articleList = [{title: '文章1',content: '文章1的內容',active: true}, {title: '文章2',content: '文章2的內容',active: false}]const renderArticleList = () => {return articleList.map((item, index) => {return <Article key={index} {...item} />})}return (<>{renderArticleList()}</>)
}export default App

效果:

三、將JSX作為Props傳遞(相當與vue里面的插槽slot)

? ? ? ? react中props有一個默認屬性,傳遞JSX值,是children,如下:

function List (props: any) {return (<><h2>{props.title}</h2><ul>{props.children}</ul><p>{props.footer}</p></>)
}function App() {return (<><List title="List 1"><li>a內容一</li><li>a內容二</li><li>a內容三</li></List><List title="List 2" footer="底部信息"><li>b內容一</li><li>b內容二</li><li>b內容三</li></List></>)
}export default App

效果:

?四、子組件向父組件傳值

import { useState } from "react"function Detail ({onActive}: any) {const [state,setState] = useState(true)function handleClick () {setState(!state)onActive(!state)}return (<div><p>detail的內容</p><button onClick={handleClick}>改變狀態</button><p>子組件:{state ? '激活' : '未激活'}</p></div>)
}function App() {const [state,setState] = useState(true)function handleClick (state: boolean) {setState(state)}return (<><Detail onActive={handleClick} /><div>父組件:{state ? '激活' : '未激活'}</div></>)
}export default App

?效果:

五、用Context進行多級組件傳值

? ? ? ? react在手寫遞歸組件時,可以用createContext、useContext和LevelContext.Provider進行層級的判斷,如下:

import { createContext, useContext } from "react"const LevelContext = createContext(1)function Dg ({children}: {children: React.ReactNode}) {const level = useContext(LevelContext)const getHtmlData = () => {switch (level) {case 1:return <div>Level 1</div>case 2:return <div>Level 2</div>case 3:return <div>Level 3</div>default:return <div>Default</div>}}return (<LevelContext.Provider value={level + 1}>{getHtmlData()}{children}</LevelContext.Provider>)}function App() {return (<><Dg><Dg><Dg><Dg children={undefined} /></Dg></Dg></Dg></>)
}export default App

效果:

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

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

相關文章

自定義reset50模型轉換到昇騰om

目錄 原始轉換腳本 腳本運行報錯 基于reset50 模型的自定義網絡 基本網絡結構 卷積模塊定義示例 Bottleneck定義示例 網絡定義示例 改進的轉換腳本 腳本運行報錯channels不匹配 腳本運行報錯維度不匹配 模型輸入數據的類型 tensor size NCHW和NHWC 自定義網絡的通…

vue3:十一、主頁面布局(進入指定菜單頁面,默認鎖定到左側菜單)

一、效果 直接進入home頁面&#xff0c;直接展開對應的菜單項 二、具體實現 1、菜單容器增加默認選中變量 在菜單容器中將默認展開菜單default-openeds修改為默認選中菜單default-active 2、引入useRoute方法 引入該方法為了獲取當前頁面的路徑 import { useRoute } from …

六十天前端強化訓練之第二十七天之Pinia 狀態管理全解與購物車實戰案例

歡迎來到編程星辰海的博客講解 看完可以給一個免費的三連嗎&#xff0c;謝謝大佬&#xff01; 目錄 一、Pinia 深度解析 1. Pinia 核心設計 2. 核心概念圖解 3. Store 類型對比 Option Store&#xff08;選項式&#xff09; Setup Store&#xff08;組合式&#xff09; …

計算機網絡技術服務管理基于Spring Boot-SSM

目錄 一、引言 二、用戶需求分析 三、功能介紹 ??3.1.資源管理?&#xff1a; ?3.2.故障管理?&#xff1a; ?3.3.性能管理?&#xff1a; ?3.4.安全管理?&#xff1a; ?3.5.配置管理?&#xff1a; ?3.6.日志管理?&#xff1a; ?3.7.用戶管理?&#xff1…

深度學習驅動下的字符識別:挑戰與創新

一、引言 1.1 研究背景 深度學習在字符識別領域具有至關重要的地位。隨著信息技術的飛速發展&#xff0c;對字符識別的準確性和效率要求越來越高。字符識別作為計算機視覺領域的一個重要研究方向&#xff0c;其主要目的是將各種形式的字符轉換成計算機可識別的文本信息。近年…

Java多線程與高并發專題——Future 是什么?

引入 在上一篇Callable 和 Runnable 的不同&#xff1f;的最后&#xff0c;我們有提到和 Callable 配合的有一個 Future 類&#xff0c;通過 Future 可以了解任務執行情況&#xff0c;或者取消任務的執行&#xff0c;還可獲取任務執行的結果&#xff0c;這些功能都是 Runnable…

【vue的some和filter】

在 Vue 中&#xff0c;some 和 filter 是兩種不同的數組方法&#xff0c;分別用于處理數據篩選和條件判斷。以下是它們在 Vue 中的具體用法和區別&#xff1a; 一、filter 方法 作用&#xff1a;對數組進行過濾&#xff0c;返回符合條件的新數組。 使用場景&#xff1a;常用于…

用ArcGIS做一張符合環評要求的植被類型圖

植被類型圖是環境影響評價&#xff08;環評&#xff09;中的重要圖件&#xff0c;需滿足數據準確性、制圖規范性和信息完整性等要求。本教程將基于ArcMap平臺&#xff0c;從數據準備到成果輸出&#xff0c;詳細講解如何制作符合環評技術規范的植被類型圖。 ArcGIS遙感解譯土地…

Fourier-Lerobot——把斯坦福人形動作策略iDP3封裝進了Lerobot(含我司七月人形研發落地實踐)

前言 近期在摳lerobot源碼時&#xff0c;看到其封裝了ALOHA ACT、diffusion policy、π0時&#xff0c;我就在想&#xff0c;lerobot其實可以再封裝下idp3 我甚至考慮是否從我聯合帶的那十幾個具身研究生中選幾個同學做下這事&#xff0c;對他們也是很好的歷練然當25年3.18日…

MySQL拒絕訪問

1. 問題 使用圖形界面工具連接MySQL數據庫&#xff0c;拒絕訪問&#xff01; 2. 解決方法 以管理員的身份打開cmd&#xff0c;輸入命令&#xff0c;啟動MySQL net start mysql版本號 3. 參考 暫無

多模態SVG生成新標桿:StarVector從圖像文本生成高精度SVG的AI模型

一、引言&#xff1a;矢量圖形的崛起與挑戰 在現代數字世界中&#xff0c;圖像扮演著至關重要的角色&#xff0c;而可伸縮矢量圖形&#xff08;SVG&#xff09;正因其獨特的優勢&#xff0c;在網頁設計、圖形設計等領域占據著越來越重要的地位。與傳統的基于像素的柵格圖像不同…

Netty——BIO、NIO 與 Netty

文章目錄 1. 介紹1.1 BIO1.1.1 概念1.1.2 工作原理1.1.3 優缺點 1.2 NIO1.2.1 概念1.2.2 工作原理1.2.3 優缺點 1.3 Netty1.3.1 概念1.3.2 工作原理1.3.3 優點 2. Netty 與 Java NIO 的區別2.1 抽象層次2.2 API 易用性2.3 性能優化2.4 功能擴展性2.5 線程模型2.6 適用場景 3. 總…

游戲引擎學習第175天

回顧和今天的計劃 今天的主要任務是完成稀疏 Unicode 支持。之前我們已經完成了所有的思考和設計工作&#xff0c;但代碼部分尚未完成&#xff0c;因為有許多內容需要調整和重構。因此&#xff0c;今天的目標就是把這些內容全部整理好并最終實現。 回顧當前測試資源構建器的狀…

零基礎上手Python數據分析 (7):Python 面向對象編程初步

寫在前面 回顧一下,我們已經學習了 Python 的基本語法、數據類型、常用數據結構和文件操作、異常處理等。 到目前為止,我們主要采用的是 面向過程 (Procedural Programming) 的編程方式,即按照步驟一步一步地編寫代碼,解決問題。 這種方式對于簡單的任務已經足夠,但當程序…

CNN的空間歸納偏置(Inductive Bias):深入解析其本質與影響(與transformer的比較)

CNN的空間歸納偏置&#xff08;Inductive Bias&#xff09;&#xff1a;深入解析其本質與影響 在深度學習領域&#xff0c;卷積神經網絡&#xff08;Convolutional Neural Networks, CNN&#xff09;和Transformer代表了兩種截然不同的設計哲學。CNN憑借其卓越的性能長期主導計…

1-4 麻雀優化深度核極限學習機超參數

本博客來源于CSDN機器魚&#xff0c;未同意任何人轉載。 更多內容&#xff0c;歡迎點擊本專欄目錄&#xff0c;查看更多內容。 目錄 0.引言 1.原理 2.具體實現 3.結語 0.引言 在博客【深度核極限學習機】里我們講述了深度核極限學習機原理&#xff0c;今天我們對其繼續進…

miniconda安裝保姆級教程|win11|深度學習環境配置

一、官網安裝miniconda miniconda官網&#xff1a;Miniconda - Anaconda 點擊Download按鈕 在紅框位置輸入郵箱并點擊submit&#xff0c;下載鏈接將會發到郵箱中 郵箱中將會收到如圖所示郵件&#xff0c;點擊下載 選擇windows對應的miniconda安裝包 miniconda安裝包安裝完成如…

AI安全、大模型安全研究(DeepSeek)

DeepSeek 點燃AI應用革命之火,但安全 “灰犀牛” 正在逼近 DeepSeek-R1國產大模型的發布,以技術創新驚艷了全球,更是極致的性價比推動國內千行百業接入 AI,政府、企業競速開發智能業務處理、智能客服、代碼生成、營銷文案等應用,“落地效率” 成為第一關鍵詞。然而與此相…

機器學習——Numpy的神奇索引與布爾索引

在 NumPy 中&#xff0c;神奇索引&#xff08;Fancy Indexing&#xff09; 和 布爾索引&#xff08;Boolean Indexing&#xff09; 是兩種強大的索引方式&#xff0c;用于從數組中提取特定元素或子集。以下是它們的詳細說明和示例&#xff1a; 1. 神奇索引&#xff08;Fancy In…

Android Studio最后一個綁定JDK8的版本,但是官方下載是最新的,怎么下載Android Studio歷史版本包,這篇文章幫你解決。

最近需要安裝Android Studio 編輯器 發現官網最新的編輯器已經不支持 jdk8了 經過查閱資料&#xff1a; Android Studio最后一個綁定JDK8的版本:4.1.3 下載地址&#xff1a;https://developer.android.google.cn/studio/archive 如果你打開是這樣的 下載頁 這是因為你用的中…