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

react的context和props詳解

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

一、context

1. 使用場景

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

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

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

2. 使用步驟

  • 調(diào)用 React.createContext() 創(chuàng)建 Provider(提供數(shù)據(jù)) 和 Consumer(消費(fèi)數(shù)據(jù)) 兩個(gè)組件
const { Provider, Consumer } = React.createContext()
  • 使用 Provider 組件作為父節(jié)點(diǎn)。
<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é)

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

二、props深入

1. children 屬性

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

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

代碼如下(示例):

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

2. props 校驗(yàn)

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

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

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

代碼如下(示例):

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

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

作用:捕獲使用組件時(shí)因?yàn)閜rops導(dǎo)致的錯(cuò)誤,給出明確的錯(cuò)誤提示,增加組件的健壯性

在這里插入圖片描述

3. props校驗(yàn)使用步驟

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

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

常見類型: number、 string、 array、bool、func、object

React元素類型:element

必填項(xiàng):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 時(shí)生效

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í)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • React之防止按鈕多次點(diǎn)擊事件?重復(fù)提交

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

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

    ReactJS入門實(shí)例教程詳解

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

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

    這篇文章主要介紹了React拆分窗格組件的兩種方法,使用第三方庫react-split-pane適用于快速實(shí)現(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使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • react 組件傳值的三種方法

    react 組件傳值的三種方法

    這篇文章主要介紹了react 組件傳值的三種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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ù)實(shí)現(xiàn)方式

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

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

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

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

最新評論

陈巴尔虎旗| 视频| 河北省| 江津市| 区。| 宁城县| 通化县| 卢氏县| 四会市| 神农架林区| 河北区| 弥渡县| 阳西县| 怀集县| 六安市| 三河市| 皮山县| 连州市| 大连市| 勐海县| 滕州市| 博野县| 罗江县| 凤阳县| 蓝田县| 陆河县| 顺义区| 荆州市| 九龙城区| 卢氏县| 乐亭县| 平舆县| 西贡区| 朝阳县| 南宁市| 准格尔旗| 丽江市| 崇明县| 汝城县| 平凉市| 丹江口市|