金華網(wǎng)站建設(shè)南京seo排名優(yōu)化公司
文章目錄
- 項目地址
- 七、數(shù)據(jù)流
- 7.1 子組件傳遞數(shù)據(jù)給父組件
- 7.1.1 方式一:給父設(shè)置回調(diào)函數(shù),傳遞給子
- 7.1.2 方式二:直接將父的setState傳遞給子
- 7.2 給props傳遞jsx
- 7.2.1 方式一:直接傳遞組件給子類
- 7.2.2 方式二:傳遞函數(shù)給子組件
- 7.3 props類型驗證
- 7.4 props的多層傳遞
- 7.5 className的傳遞以及合并
- 八、State進(jìn)階
- 8.1 不同組件之間的狀態(tài)共享
- 8.1.1 組合組件
- 8.1.2 找到公共父組件設(shè)置狀態(tài)
- 8.1.3 根據(jù)組件的功能添加事件
- 8.1.4 兩個子組件的設(shè)置
- 8.2 獲取上一次的狀態(tài),解決異步問題
- 8.3 useReducer集中處理狀態(tài)更新邏輯
- 九、處理組件錯誤
- 9.1 處理組件錯誤
- 9.2 組件懶加載:分割頁面,提高頁面速度
- 9.3 引入svg圖標(biāo)
- 9.3.1 方式一:和圖片導(dǎo)入方式一樣
- 9.3.2 方式二:將svg文件當(dāng)作組件導(dǎo)入
- 9.4 使用絕對路徑導(dǎo)入
- 9.5 使用Children防止過度嵌套
- 9.6 受控組件和非受控組件
- 9.6.1 受控組件
- 9.6.2 非受控組件
- 十、自定義組件
- 10.1 將普通函數(shù)改為自定義Hooks
項目地址
- 教程作者:
- 教程地址:
- 代碼倉庫地址:
- 所用到的框架和插件:
七、數(shù)據(jù)流
7.1 子組件傳遞數(shù)據(jù)給父組件
7.1.1 方式一:給父設(shè)置回調(diào)函數(shù),傳遞給子
父組件的設(shè)置
子組件
7.1.2 方式二:直接將父的setState傳遞給子
- 該方法父子嚴(yán)重耦合,復(fù)用性低,適合父子嚴(yán)重綁定的組件
7.2 給props傳遞jsx
定義個導(dǎo)航條,可以是組件形式,也可以直接是jsx const nav = <div</div>
//導(dǎo)航組件
function Nav() {return (<div className="menu"><a href="/">首頁</a><a href="/product">產(chǎn)品</a><a href="/user">用戶</a></div>);
}
7.2.1 方式一:直接傳遞組件給子類
父類擁有導(dǎo)航組件的控制權(quán)
- 子組件使用:直接使用
function Layout({ nav, children }) {return (<div className="container"><nav>{nav}</nav><main>{children}</main></div>);
}
7.2.2 方式二:傳遞函數(shù)給子組件
由于傳遞的組件以函數(shù)形式傳遞,控制權(quán)在子
- 子組件使用:加了反斜杠,以組件形式使用
function Layout({ Nav, children }) {return (<div className="container"><nav>{<Nav />}</nav><main>{children}</main></div>);
}
7.3 props類型驗證
- 子組件添加驗證
- 可以使用TypeScripts來驗證
7.4 props的多層傳遞
- 祖父組件需要傳遞數(shù)據(jù)
function App() {const userData = {count: 32.95,rate: "↑8.98%",};return (<main className="container"><UserDataCard message="hello world" userData={userData} /></main>);
}
- 中間層接受數(shù)據(jù),并傳遞給下一層
- 最后一層使用數(shù)據(jù)
function UserData({ userData }) {return (<div style={{ display: "grid", gap: "12px" }}><h1>用戶數(shù)據(jù)</h1>