亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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 屬性:表示組件標簽的子節(jié)點。當組件標簽有子節(jié)點時,props 就會有該屬性

children 屬性與普通的props一樣,值可以是任意值(文本、標簽、組件、甚至是函數(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、 string、 array、boolfunc、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默認值

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

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

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

總結(jié)

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

相關(guān)文章

  • Redux中間件的使用方法教程

    Redux中間件的使用方法教程

    中間件就是一個函數(shù),對store.dispatch方法進行了改造,在發(fā)出 Action 和執(zhí)行 Reducer 這兩步之間,添加了其他功能,要理解中間件,關(guān)鍵點是要知道,這個中間件是連接哪些部分的軟件,它在中間做了什么事,提供了什么服務(wù)
    2023-01-01
  • antd-react使用Select組件defaultValue踩的坑及解決

    antd-react使用Select組件defaultValue踩的坑及解決

    這篇文章主要介紹了antd-react使用Select組件defaultValue踩的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • react antd表格中渲染一張或多張圖片的實例

    react antd表格中渲染一張或多張圖片的實例

    這篇文章主要介紹了react antd表格中渲染一張或多張圖片的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • React路由動畫切換實現(xiàn)過程詳解

    React路由動畫切換實現(xiàn)過程詳解

    這篇文章主要介紹了react-router 路由切換動畫的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2022-12-12
  • React錯誤的習(xí)慣用法分析詳解

    React錯誤的習(xí)慣用法分析詳解

    這篇文章主要為大家介紹了React錯誤用法習(xí)慣分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Router添加路由攔截方法講解

    Router添加路由攔截方法講解

    在vue項目中使用vue-router做頁面跳轉(zhuǎn)時,路由的方式有兩種,一種是靜態(tài)路由,另一種是動態(tài)路由。而要實現(xiàn)對路由的控制需要使用vuex和router全局守衛(wèi)進行判斷攔截
    2023-03-03
  • 一文帶你深入理解React中的Context

    一文帶你深入理解React中的Context

    React?Context是React提供給開發(fā)者的一種常用的狀態(tài)管理機制,本文主要來和大家講講為什么需要Context,又是如何使用Context的,感興趣的可以了解一下
    2023-05-05
  • React工作流程及Error Boundaries實現(xiàn)過程講解

    React工作流程及Error Boundaries實現(xiàn)過程講解

    這篇文章主要介紹了React工作流程及Error Boundaries實現(xiàn)過程講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-02-02
  • React-Native中禁用Navigator手勢返回的示例代碼

    React-Native中禁用Navigator手勢返回的示例代碼

    本篇文章主要介紹了React-Native中禁用Navigator手勢返回的示例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-09-09
  • React Native react-navigation 導(dǎo)航使用詳解

    React Native react-navigation 導(dǎo)航使用詳解

    本篇文章主要介紹了React Native react-navigation 導(dǎo)航使用詳解,詳解的介紹了react-navigation導(dǎo)航的使用,具有一定的參考價值,有興趣的可以了解一下
    2017-12-12

最新評論