最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react的context和props詳解

 更新時間:2021年11月10日 10:01:56   作者:<a href="#">leo</a>  
這篇文章主要介紹了react的context和props的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用React,感興趣的朋友可以了解下

一、context

1. 使用場景

設(shè)想一個場景,假如我們要給子孫組件傳值,應(yīng)該怎么辦呢?

如果使用props一層一層往下 傳遞的話,特別的繁瑣!

更好的辦法:使用context來幫助我們跨組件傳遞數(shù)據(jù)

2. 使用步驟

  • 調(diào)用 React.createContext() 創(chuàng)建 Provider(提供數(shù)據(jù)) 和 Consumer(消費數(shù)據(jù)) 兩個組件
const { Provider, Consumer } = React.createContext()
  • 使用 Provider 組件作為父節(jié)點。
<Provider>
  <div className="App">
    <Child1 />
  </div>
</Provider>
  • 設(shè)置 value 屬性,表示要傳遞的數(shù)據(jù)。
<Provider value="pink">
  • 調(diào)用 Consumer 組件接收數(shù)據(jù)。
<Consumer>
  {data => <span>data參數(shù)表示接收到的數(shù)據(jù) -- {data}</span>}
</Consumer>

3. 總結(jié)

  • 如果兩個組件是多層嵌套可以使用Context實現(xiàn)組件通訊
  • Context提供了兩個組件:Provider Consumer
  • Provider組件:用來提供數(shù)據(jù)
  • Consumer組件:用來消費數(shù)據(jù)

二、props深入

1. children 屬性

children 屬性:表示組件標(biāo)簽的子節(jié)點。當(dāng)組件標(biāo)簽有子節(jié)點時,props 就會有該屬性

children 屬性與普通的props一樣,值可以是任意值(文本、標(biāo)簽、組件、甚至是函數(shù))

代碼如下(示例):

function Hello(props) {
  return (
    <div>
      組件的子節(jié)點:{props.children}
    </div>
  )
}
<Hello>我是子節(jié)點</Hello>

2. props 校驗

對于組件來說,props 是外部數(shù)據(jù)的容器,無法保證組件使用者傳入什么格式的數(shù)據(jù)

如果傳入的數(shù)據(jù)格式不對,可能會導(dǎo)致組件內(nèi)部報錯

關(guān)鍵問題:除了語法報錯信息之外沒有額外的錯誤提示

代碼如下(示例):

// 創(chuàng)建的組件
function App(props) {
  const arr = props.colors
  const list = arr.map((item, index) => <li key={index}>{item}</li>)
  return (
    <ul>{list}</ul>
  )
}
// 使用組件時
<App colors={19} />

props 校驗:允許在創(chuàng)建組件的時候,就指定 props 的類型、格式等

作用:捕獲使用組件時因為props導(dǎo)致的錯誤,給出明確的錯誤提示,增加組件的健壯性

在這里插入圖片描述

3. props校驗使用步驟

  • 安裝 prop-types (npm i prop-types )
  • 導(dǎo)入 prop-types 包
  • 使用 組件名.propTypes = {} 來給組件的props添加校驗規(guī)則
  • 校驗規(guī)則通過 PropTypes 對象來指定
import PropTypes from 'prop-types'
function App(props) {
  return (
    <h1>Hi, {props.colors}</h1>
  )
}
App.propTypes = {
  // 約定colors屬性為array類型
  // 如果類型不對,則報出明確錯誤,便于分析錯誤原因
  colors: PropTypes.array
}

4. props校驗約束規(guī)則

常見類型: number、 stringarray、bool、func、object

React元素類型:element

必填項:isRequired

特定結(jié)構(gòu)的對象:shape({ })

// 常見類型
optionalFunc: PropTypes.func,
// 必選
requiredFunc: PropTypes.func.isRequired,
// 特定結(jié)構(gòu)的對象
optionalObjectWithShape: PropTypes.shape({
  color: PropTypes.string,
  fontSize: PropTypes.number
})

5. props默認(rèn)值

場景:分頁組件 → 每頁顯示條數(shù)

作用:給 props 設(shè)置默認(rèn)值,在未傳入 props 時生效

function App(props) {
  return (
    <div>
      此處展示props的默認(rèn)值:{props.pageSize}
    </div>
  )
}
// 設(shè)置默認(rèn)值
App.defaultProps = {
  pageSize: 10
}
// 不傳入pageSize屬性
<App />

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 關(guān)于react中組件通信的幾種方式詳解

    關(guān)于react中組件通信的幾種方式詳解

    這篇文章主要給大家介紹了關(guān)于react中組件通信的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • React之防止按鈕多次點擊事件?重復(fù)提交

    React之防止按鈕多次點擊事件?重復(fù)提交

    這篇文章主要介紹了React之防止按鈕多次點擊事件?重復(fù)提交問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • ReactJS入門實例教程詳解

    ReactJS入門實例教程詳解

    React.render?是?React?的最基本方法,用于將模板轉(zhuǎn)為?HTML?語言,并插入指定的?DOM?節(jié)點,這篇文章主要介紹了ReactJS入門實例教程,需要的朋友可以參考下
    2022-06-06
  • React拆分窗格組件的兩種方法

    React拆分窗格組件的兩種方法

    這篇文章主要介紹了React拆分窗格組件的兩種方法,使用第三方庫react-split-pane適用于快速實現(xiàn)拆分窗格功能,并且對功能和樣式的要求較為簡單的場景,本文結(jié)合示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • 如何使用Redux Toolkit簡化Redux

    如何使用Redux Toolkit簡化Redux

    這篇文章主要介紹了如何使用Redux Toolkit簡化Redux,幫助大家更好的理解和學(xué)習(xí)使用React框架,感興趣的朋友可以了解下
    2021-04-04
  • redux副作用處理之redux-thunk使用

    redux副作用處理之redux-thunk使用

    這篇文章主要介紹了redux副作用處理之redux-thunk使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • react 組件傳值的三種方法

    react 組件傳值的三種方法

    這篇文章主要介紹了react 組件傳值的三種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • react的context和props詳解

    react的context和props詳解

    這篇文章主要介紹了react的context和props的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用React,感興趣的朋友可以了解下
    2021-11-11
  • React中處理表單數(shù)據(jù)實現(xiàn)方式

    React中處理表單數(shù)據(jù)實現(xiàn)方式

    本文介紹了如何在React中處理表單數(shù)據(jù),包括控制組件和非控制組件的使用,通過控制組件,表單的輸入值由React組件的狀態(tài)控制;非控制組件通過ref來訪問表單輸入的當(dāng)前值,文章還展示了如何處理多個輸入和添加驗證和樣式,以提供更好的用戶體驗
    2025-02-02
  • React項目中使用zustand狀態(tài)管理的實現(xiàn)

    React項目中使用zustand狀態(tài)管理的實現(xiàn)

    zustand是一個用于狀態(tài)管理的小巧而強大的庫,本文主要介紹了React項目中使用zustand狀態(tài)管理的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-10-10

最新評論

交口县| 花莲市| 团风县| 孟津县| 上犹县| 崇左市| 富阳市| 浦江县| 金昌市| 株洲市| 肥西县| 衡阳市| 北京市| 集安市| 确山县| 天全县| 时尚| 漳浦县| 庆城县| 常德市| 前郭尔| 乌拉特前旗| 洮南市| 北碚区| 蕉岭县| 菏泽市| 张家港市| 都昌县| 剑河县| 镇原县| 台中县| 瑞安市| 昌黎县| 宣汉县| 肥城市| 梅河口市| 迁西县| 北流市| 卢龙县| 福清市| 通州区|