欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2023年02月10日 14:42:11   作者:碼農(nóng)小菲  
這篇文章主要介紹了React高級指引中使用PropTypes實現(xiàn)類型檢查功能的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(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 值類型不正確時,JavaScript 控制臺將會顯示警告

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,
    // 一個 React 元素。
    optionalElement: PropTypes.element,
    // 一個 React 元素類型(即,MyComponent)。
    optionalElementType: PropTypes.elementType,
    // 你也可以聲明 prop 為類的實例,這里使用
    // JS 的 instanceof 操作符。
    optionalMessage: PropTypes.instanceOf(Message),
    // 你可以讓你的 prop 只能是特定的值,指定它為
    // 枚舉類型。
    optionalEnum: PropTypes.oneOf(['News', 'Photos']),
    // 一個對象可以是幾種類型中的任意一個類型
    optionalUnion: PropTypes.oneOfType([
      PropTypes.string,
      PropTypes.number,
      PropTypes.instanceOf(Message)
    ]),
    // 可以指定一個數(shù)組由某一類型的元素組成
    optionalArrayOf: PropTypes.arrayOf(PropTypes.number),
    // 可以指定一個對象由某一類型的值組成
    optionalObjectOf: PropTypes.objectOf(PropTypes.number),
    // 可以指定一個對象由特定的類型值組成
    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` ,確保
    // 這個 prop 沒有被提供時,會打印警告信息。
    requiredFunc: PropTypes.func.isRequired,
    // 任意類型的數(shù)據(jù)
    requiredAny: PropTypes.any.isRequired,
    // 你可以指定一個自定義驗證器。它在驗證失敗時應(yīng)返回一個 Error 對象。
    // 請不要使用 `console.warn` 或拋出異常,因為這在 `onOfType` 中不會起作用。
    customProp: function(props, propName, componentName) {
      if (!/matchme/.test(props[propName])) {
        return new Error(
          'Invalid prop `' + propName + '` supplied to' +
          ' `' + componentName + '`. Validation failed.'
        );
      }
    },
    // 你也可以提供一個自定義的 `arrayOf` 或 `objectOf` 驗證器。
    // 它應(yīng)該在驗證失敗時返回一個 Error 對象。
    // 驗證器將驗證數(shù)組或?qū)ο笾械拿總€值。驗證器的前兩個參數(shù)
    // 第一個是數(shù)組或?qū)ο蟊旧?
    // 第二個是他們當(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.'
        );
      }
    })
  };

限制單個元素

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

   import PropTypes from 'prop-types';
   class MyComponent extends React.Component {
     render() {
       // 這必須只有一個元素,否則控制臺會打印警告。
       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 在父組件沒有指定其值時,有一個默認(rèn)值。propTypes 類型檢查發(fā)生在 defaultProps 賦值后,所以類型檢查也適用于 defaultProps。

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

您可能感興趣的文章:

相關(guān)文章

  • 淺談React Native 中組件的生命周期

    淺談React Native 中組件的生命周期

    本篇文章主要介紹了淺談React Native 中組件的生命周期,非常具有實用價值,需要的朋友可以參考下
    2017-09-09
  • React.Js添加與刪除onScroll事件的方法詳解

    React.Js添加與刪除onScroll事件的方法詳解

    這篇文章主要給大家介紹了關(guān)于React.Js添加與刪除onScroll事件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • React class和function的區(qū)別小結(jié)

    React class和function的區(qū)別小結(jié)

    Class組件和Function組件是React中創(chuàng)建組件的兩種主要方式,本文主要介紹了React class和function的區(qū)別小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 使用useEffect模擬組件生命周期

    使用useEffect模擬組件生命周期

    這篇文章主要介紹了使用useEffect模擬組件生命周期,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • React Native第三方平臺分享的實例(Android,IOS雙平臺)

    React Native第三方平臺分享的實例(Android,IOS雙平臺)

    本篇文章主要介紹了React Native第三方平臺分享的實例(Android,IOS雙平臺),具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • React實現(xiàn)歌詞滾動效果(跟隨音樂播放時間滾動)

    React實現(xiàn)歌詞滾動效果(跟隨音樂播放時間滾動)

    這篇文章主要為大家詳細(xì)介紹了React實現(xiàn)歌詞滾動效果(跟隨音樂播放使勁按滾動),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2024-02-02
  • 在React中應(yīng)用SOLID原則的方法

    在React中應(yīng)用SOLID原則的方法

    SOLID?是一套原則,它們主要是關(guān)心代碼質(zhì)量和可維護(hù)性的軟件專業(yè)人員的指導(dǎo)方針,本文給大家分享如何在React中應(yīng)用SOLID原則,感興趣的朋友一起看看吧
    2022-07-07
  • 基于react項目打包css引用路徑錯誤解決方案

    基于react項目打包css引用路徑錯誤解決方案

    這篇文章主要介紹了基于react項目打包css引用路徑錯誤解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • react項目從新建到部署的實現(xiàn)示例

    react項目從新建到部署的實現(xiàn)示例

    這篇文章主要介紹了react項目從新建到部署的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • React引入css的幾種方式及應(yīng)用小結(jié)

    React引入css的幾種方式及應(yīng)用小結(jié)

    這篇文章主要介紹了React引入css的幾種方式及應(yīng)用小結(jié),操作styled組件的樣式屬性,可在組件標(biāo)簽上定義屬性、也可以通過attrs定義屬性,本文通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03

最新評論