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

React使用PropTypes實(shí)現(xiàn)類型檢查功能

 更新時(shí)間:2023年02月10日 14:42:11   作者:碼農(nóng)小菲  
這篇文章主要介紹了React高級(jí)指引中使用PropTypes實(shí)現(xiàn)類型檢查功能的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

使用 PropTypes 進(jìn)行類型檢查

  • react 內(nèi)置類型檢查功能
  • 要在組件的 props 上進(jìn)行類型檢查,你只需配置特定的 propTypes 屬性
  • propTypes 僅在開發(fā)模式下進(jìn)行檢查
import PropTypes from 'prop-types'
class Greeting extends React.Component {
  render() {
    return (
      <h1>Hello, {this.props.name}</h1>
    );
  }
}
Greeting.propTypes = {
 name: PropTypes.string
}
// 當(dāng)傳入的 prop 值類型不正確時(shí),JavaScript 控制臺(tái)將會(huì)顯示警告

PropTypes

   import PropTypes from 'prop-types';
   MyComponent.propTypes = {
    // 你可以將屬性聲明為 JS 原生類型,默認(rèn)情況下
    // 這些屬性都是可選的。
    optionalArray: PropTypes.array,
    optionalBool: PropTypes.bool,
    optionalFunc: PropTypes.func,
    optionalNumber: PropTypes.number,
    optionalObject: PropTypes.object,
    optionalString: PropTypes.string,
    optionalSymbol: PropTypes.symbol,
    // 任何可被渲染的元素(包括數(shù)字、字符串、元素或數(shù)組)
    // (或 Fragment) 也包含這些類型。
    optionalNode: PropTypes.node,
    // 一個(gè) React 元素。
    optionalElement: PropTypes.element,
    // 一個(gè) React 元素類型(即,MyComponent)。
    optionalElementType: PropTypes.elementType,
    // 你也可以聲明 prop 為類的實(shí)例,這里使用
    // JS 的 instanceof 操作符。
    optionalMessage: PropTypes.instanceOf(Message),
    // 你可以讓你的 prop 只能是特定的值,指定它為
    // 枚舉類型。
    optionalEnum: PropTypes.oneOf(['News', 'Photos']),
    // 一個(gè)對(duì)象可以是幾種類型中的任意一個(gè)類型
    optionalUnion: PropTypes.oneOfType([
      PropTypes.string,
      PropTypes.number,
      PropTypes.instanceOf(Message)
    ]),
    // 可以指定一個(gè)數(shù)組由某一類型的元素組成
    optionalArrayOf: PropTypes.arrayOf(PropTypes.number),
    // 可以指定一個(gè)對(duì)象由某一類型的值組成
    optionalObjectOf: PropTypes.objectOf(PropTypes.number),
    // 可以指定一個(gè)對(duì)象由特定的類型值組成
    optionalObjectWithShape: PropTypes.shape({
      color: PropTypes.string,
      fontSize: PropTypes.number
    }),
    // An object with warnings on extra properties
    optionalObjectWithStrictShape: PropTypes.exact({
      name: PropTypes.string,
      quantity: PropTypes.number
    }),   
    // 你可以在任何 PropTypes 屬性后面加上 `isRequired` ,確保
    // 這個(gè) prop 沒有被提供時(shí),會(huì)打印警告信息。
    requiredFunc: PropTypes.func.isRequired,
    // 任意類型的數(shù)據(jù)
    requiredAny: PropTypes.any.isRequired,
    // 你可以指定一個(gè)自定義驗(yàn)證器。它在驗(yàn)證失敗時(shí)應(yīng)返回一個(gè) Error 對(duì)象。
    // 請(qǐng)不要使用 `console.warn` 或拋出異常,因?yàn)檫@在 `onOfType` 中不會(huì)起作用。
    customProp: function(props, propName, componentName) {
      if (!/matchme/.test(props[propName])) {
        return new Error(
          'Invalid prop `' + propName + '` supplied to' +
          ' `' + componentName + '`. Validation failed.'
        );
      }
    },
    // 你也可以提供一個(gè)自定義的 `arrayOf` 或 `objectOf` 驗(yàn)證器。
    // 它應(yīng)該在驗(yàn)證失敗時(shí)返回一個(gè) Error 對(duì)象。
    // 驗(yàn)證器將驗(yàn)證數(shù)組或?qū)ο笾械拿總€(gè)值。驗(yàn)證器的前兩個(gè)參數(shù)
    // 第一個(gè)是數(shù)組或?qū)ο蟊旧?
    // 第二個(gè)是他們當(dāng)前的鍵。
    customArrayProp: PropTypes.arrayOf(function(propValue, key, componentName, location, propFullName) {
      if (!/matchme/.test(propValue[key])) {
        return new Error(
          'Invalid prop `' + propFullName + '` supplied to' +
          ' `' + componentName + '`. Validation failed.'
        );
      }
    })
  };

限制單個(gè)元素

通過 PropTypes.element 來確保傳遞給組件的 children 中只包含一個(gè)元素

   import PropTypes from 'prop-types';
   class MyComponent extends React.Component {
     render() {
       // 這必須只有一個(gè)元素,否則控制臺(tái)會(huì)打印警告。
       const children = this.props.children;
       return (
         <div>
           {children}
         </div>
       );
     }
   }
   MyComponent.propTypes = {
     children: PropTypes.element.isRequired
   };

默認(rèn) Prop 值

可以通過配置特定的 defaultProps 屬性來定義 props 的默認(rèn)值

class Greeting extends React.Component {
  render() {
    return (
      <h1>Hello, {this.props.name}</h1>
    );
  }
}
// 指定 props 的默認(rèn)值:
Greeting.defaultProps = {
  name: 'Stranger'
};
// 渲染出 "Hello, Stranger":
ReactDOM.render(
  <Greeting />,
  document.getElementById('example')
);

defaultProps 用于確保 this.props.name 在父組件沒有指定其值時(shí),有一個(gè)默認(rèn)值。propTypes 類型檢查發(fā)生在 defaultProps 賦值后,所以類型檢查也適用于 defaultProps。

到此這篇關(guān)于React使用PropTypes實(shí)現(xiàn)類型檢查功能的文章就介紹到這了,更多相關(guān)React PropTypes類型檢查內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • redux持久化之redux-persist結(jié)合immutable使用問題

    redux持久化之redux-persist結(jié)合immutable使用問題

    這篇文章主要為大家介紹了redux持久化之redux-persist結(jié)合immutable使用問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 詳解react-router如何實(shí)現(xiàn)按需加載

    詳解react-router如何實(shí)現(xiàn)按需加載

    本篇文章主要介紹了react-router如何實(shí)現(xiàn)按需加載,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • 基于React實(shí)現(xiàn)表單數(shù)據(jù)的添加和刪除詳解

    基于React實(shí)現(xiàn)表單數(shù)據(jù)的添加和刪除詳解

    這篇文章主要給大家介紹了基于React實(shí)現(xiàn)表單數(shù)據(jù)的添加和刪除的方法,文中給出了詳細(xì)的示例供大家參考,相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • react中使用swiper的具體方法

    react中使用swiper的具體方法

    本篇文章主要介紹了react中使用swiper的具體方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • 詳解react中的state的簡寫方式

    詳解react中的state的簡寫方式

    React是一個(gè)狀態(tài)機(jī)主要體現(xiàn)在state上,通過與用戶交易實(shí)現(xiàn)不同的狀態(tài),state是組件的私有屬性,是用來初始化的,本文重點(diǎn)給大家介紹react中的state的簡寫方式,感興趣的朋友一起看看吧
    2021-08-08
  • React如何避免重渲染

    React如何避免重渲染

    這篇文章主要介紹了React如何避免重渲染,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • React實(shí)現(xiàn)前端選區(qū)的示例代碼

    React實(shí)現(xiàn)前端選區(qū)的示例代碼

    本文主要介紹了React實(shí)現(xiàn)前端選區(qū)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • React memo減少重復(fù)渲染詳解

    React memo減少重復(fù)渲染詳解

    React.memo為高階組件。它與React.PureComponent 非常相似,但它適用于函數(shù)組件,但不適用于class組件。文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-10-10
  • react+typescript中使用echarts的實(shí)現(xiàn)步驟

    react+typescript中使用echarts的實(shí)現(xiàn)步驟

    本文主要介紹了react+typescript中使用echarts的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • react中useRef的應(yīng)用使用詳解

    react中useRef的應(yīng)用使用詳解

    這篇文章主要介紹了react中useRef的應(yīng)用使用詳解的相關(guān)資料,需要的朋友可以參考下
    2023-05-05

最新評(píng)論

静安区| 噶尔县| 富宁县| 扶绥县| 绍兴县| 平谷区| 开鲁县| 饶平县| 邢台市| 二连浩特市| 柳江县| 池州市| 涞源县| 万荣县| 崇仁县| 航空| 孝义市| 马公市| 舟曲县| 三江| 扬中市| 文安县| 崇阳县| 泰安市| 常山县| 望都县| 保山市| 博罗县| 安福县| 奉新县| 新源县| 五莲县| 龙胜| 吉隆县| 开远市| 朝阳县| 田阳县| 华安县| 修文县| 罗平县| 湟源县|