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

React教程之Props驗證的具體用法(Props Validation)

 更新時間:2017年09月04日 10:00:45   作者:跡憶  
這篇文章主要介紹了React教程之Props驗證的具體用法(Props Validation),非常具有實用價值,需要的朋友可以參考下

Props驗證對于組件的正確使用是一種非常有用的方式。它可以避免隨著你的應用的程序越來越復雜從而出現(xiàn)很多的bug和問題。并且,它還可以是你的程序變得更易讀。

那如何對Props進行驗證呢,其實很簡單,React為我們提供了PropTypes以供驗證使用。當我們向Props傳入的數(shù)據(jù)無效(也就是向Props傳入的數(shù)據(jù)類型和驗證的數(shù)據(jù)類型不符)就會在控制臺發(fā)出警告信息。

看下面的例子

var Propsva = React.createClass({
  propTypes: {
    optionalArray: React.PropTypes.array,
    optionalBool: React.PropTypes.bool,
    optionalFunc: React.PropTypes.func,
    optionalNumber: React.PropTypes.number,
    optionalObject: React.PropTypes.object,
    optionalString: React.PropTypes.string,
  },
  getDefaultProps:function(){
    return {
      optionalArray: ['onmpw.com','——跡憶博客'],
      optionalBool: true,
      optionalFunc: function (arg) {
        console.log(arg);
      },
      optionalNumber: 3,
      optionalObject: {
        object1: "objectvalue1",
        object2: "objectvalue2",
        object3: "objectvalue3",
      },
      optionalString: "My Onmpw",
    };
  },
  render:function(){
    return (
      <div>
        <h3>Array:{this.props.optionalArray}</h3>
        <h3>Bool:{this.props.optionalBool}</h3>
        <h3 onClick={this.props.optionalFunc}>Func:click</h3>
        <h3>Number:{this.props.optionalNumber}</h3>
        <h3>Object:{this.props.optionalObject.object1}</h3>
        <h3>Object:{this.props.optionalObject.object2}</h3>
        <h3>Object:{this.props.optionalObject.object3}</h3>
        <h3>String:{this.props.optionalString}</h3>
      </div>
    );
  }
});
ReactDOM.render(
  <Propsva />,
  document.getElementById('content')
);

當然,上面這個例子是沒有錯誤的。下面我們將上面的例子進行修改

getDefaultProps:function(){
  return {
    optionalArray: 'onmpw.com——跡憶博客',
    optionalBool: true,
    optionalFunc: function (arg) {
      console.log(arg);
    },
    optionalNumber: 3,
    optionalObject: {
      object1: "objectvalue1",
      object2: "objectvalue2",
      object3: "objectvalue3",
    },
    optionalString: "My Onmpw",
  };
},

然后,我們會在控制臺中發(fā)現(xiàn)有如下的警告

Warning: Failed propType: Invalid prop `optionalArray` of type `string` supplied to `Propsva`, expected `array`.

這是一種情況,驗證Props的數(shù)據(jù)類型。還有一種情況就是驗證Props是否有值。看下面的代碼

propTypes: {
  optionalArray: React.PropTypes.array.isRequired,
  optionalBool: React.PropTypes.bool.isRequired,
  optionalFunc: React.PropTypes.func,
  optionalNumber: React.PropTypes.number,
  optionalObject: React.PropTypes.object,
  optionalString: React.PropTypes.string,
},

在React.PropTypes.array和React.PropTypes.bool后面加上isRequired,表示optionalArray和optionalBool兩項是必須有值的

getDefaultProps:function(){
  return {
    optionalFunc: function (arg) {
      console.log(arg);
    },
    optionalNumber: 3,
    optionalObject: {
      object1: "objectvalue1",
      object2: "objectvalue2",
      object3: "objectvalue3",
    },
    optionalString: "My Onmpw",
  };
},

在上面代碼中我們將optionalArray和optionalBool去掉,然后再去瀏覽器中運行代碼,會發(fā)現(xiàn)控制臺報如下的錯誤

Warning: Failed propType: Required prop `optionalArray` was not specified in `Propsva`.
Warning: Failed propType: Required prop `optionalBool` was not specified in `Propsva`.

當然,上面只是簡單的兩種情況。對于Props的驗證,還有很多的東西,驗證的形式也有很多,具體我們可以參考React官方文檔。

這里我們有一個知識點需要說明一下,就是getDefaultProps。這是默認給Props賦值??聪旅娴拇a

var ComponentDefaultProps = React.createClass({
  getDefaultProps: function() {
    return {
      value: 'Default Value'
    };
  },
  render:function(){
    return (
      <div>{this.props.value}</div>
    )
  }
});
ReactDOM.render(
  <ComponentDefaultProps />,
  document.getElementById('content')
);

getDefaultProps()可以保證,當父級組件沒有傳入Props的時候,可以保證當前組件有默認的Props的值。需要注意的是,getDefaultProps的返回結果是會被緩存起來的。因此,我們可以直接使用Props,而沒有必要再手動編寫一些沒有意義的重復的代碼。

對于Props的驗證,就介紹到這里。希望本文對大家有所幫助。也希望大家多多支持腳本之家。

相關文章

  • 如何使用React構建一個擲骰子的小游戲

    如何使用React構建一個擲骰子的小游戲

    這篇文章主要介紹了如何使用React構建一個擲骰子的小游戲,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • react-three/postprocessing庫的參數(shù)中文含義使用解析

    react-three/postprocessing庫的參數(shù)中文含義使用解析

    這篇文章主要介紹了react-three/postprocessing庫的參數(shù)中文含義使用總結,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • React進行路由變化監(jiān)聽的解決方案

    React進行路由變化監(jiān)聽的解決方案

    在現(xiàn)代單頁應用(SPA)中,路由管理是至關重要的一部分,它不僅決定了用戶如何在頁面間切換,還直接影響到整個應用的性能和用戶體驗,這些看似不起眼的問題,往往會導致功能錯亂和性能下降,本篇文章將深入探討在 React 中如何高效監(jiān)聽路由變化,需要的朋友可以參考下
    2025-01-01
  • Hello?React的組件化方式之React入門小案例演示

    Hello?React的組件化方式之React入門小案例演示

    這篇文章主要介紹了Hello?React的組件化方式-React入門小案例,本文通過Hello?React的案例,?來體驗一下React開發(fā)模式,?以及jsx的語法,需要的朋友可以參考下
    2022-10-10
  • react自適應布局px轉rem實現(xiàn)示例詳解

    react自適應布局px轉rem實現(xiàn)示例詳解

    這篇文章主要為大家介紹了react自適應布局px轉rem實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 詳解Jotai Immer如何實現(xiàn)undo redo功能示例詳解

    詳解Jotai Immer如何實現(xiàn)undo redo功能示例詳解

    這篇文章主要為大家介紹了詳解Jotai Immer如何實現(xiàn)undo redo功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • React從Class方式轉Hooks詳解

    React從Class方式轉Hooks詳解

    這篇文章主要介紹了React從Class方式轉Hooks詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-09-09
  • 淺談react-native熱更新react-native-pushy集成遇到的問題

    淺談react-native熱更新react-native-pushy集成遇到的問題

    下面小編就為大家?guī)硪黄獪\談react-native熱更新react-native-pushy集成遇到的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • ReactNative列表ListView的用法

    ReactNative列表ListView的用法

    本篇文章主要介紹了ReactNative列表ListView的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • React重新渲染超詳細講解

    React重新渲染超詳細講解

    什么是re-render(重新渲染)?哪些是必要的re-render?哪些是非必要的re-render?如果你對這些問題還不是很明白,那么可以在這篇文章中找到答案
    2022-11-11

最新評論

荔浦县| 新昌县| 沅江市| 锡林郭勒盟| 灵宝市| 休宁县| 天水市| 攀枝花市| 盱眙县| 香港 | 太仆寺旗| 自治县| 大田县| 保定市| 松江区| 红安县| 彰武县| 东至县| 莆田市| 奉化市| 新昌县| 永春县| 濉溪县| 嘉善县| 鄂托克前旗| 浦城县| 浦东新区| 铁力市| 搜索| 府谷县| 施甸县| 偃师市| 伊川县| 喀喇| 肃南| 弥渡县| 滁州市| 仁布县| 和静县| 福州市| 聂拉木县|