react中使用prop-types檢測(cè)props數(shù)據(jù)類(lèi)型

一僵腺、為什么使用prop-types

在多人開(kāi)發(fā)時(shí)鲤孵,當(dāng)被人使用自己定義的組件時(shí),有可能出現(xiàn)類(lèi)型傳錯(cuò)的情況辰如,而在自己的組件上加上prop-types普监,他可以對(duì)父組件傳來(lái)的props進(jìn)行檢查,加入父組件中想傳遞的是字符串類(lèi)型‘3’琉兜,而傳遞了一個(gè)數(shù)字類(lèi)型3凯正,如果沒(méi)有類(lèi)型檢查系統(tǒng)不會(huì)給與提示,但是有了類(lèi)型檢查以后豌蟋,再控制臺(tái)會(huì)給你一個(gè)類(lèi)型傳遞錯(cuò)誤的提示廊散。這樣在工作中可以快速找到錯(cuò)誤。

二梧疲、學(xué)習(xí)文檔

https://www.npmjs.com/package/prop-types npm官網(wǎng)
https://reactjs.org/docs/typechecking-with-proptypes.html react官方

三允睹、安裝與引入

//安裝
npm install prop-types --save
//引入
import PropTypes from 'prop-types';

四、它可以檢測(cè)的類(lèi)型

optionalArray: PropTypes.array,
optionalBool: PropTypes.bool,
optionalFunc: PropTypes.func,
optionalNumber: PropTypes.number,
optionalObject: PropTypes.object,
optionalString: PropTypes.string,
optionalSymbol: PropTypes.symbol,

五幌氮、class定義中使用方法

class Greeting extends React.Component {
  render() {
    return (
      <h1>Hello, {this.props.name}</h1>
    );
  }
}

// Specifies the default values for props:
Greeting.defaultProps = {
  name: 'Stranger'
};

// Renders "Hello, Stranger":
ReactDOM.render(
  <Greeting />,
  document.getElementById('example')
);

六缭受、ES7中使用方法示例

class Greeting extends React.Component {
  //如果沒(méi)有傳遞該屬性時(shí)的默認(rèn)值
  static defaultProps = {
    name: 'stranger'
  }
  //如果傳遞該屬性,該屬性值必須為字符串
  static propTypes={
    name:PropTypes.string
  }
  render() {
    return (
      <div>Hello, {this.props.name}</div>
    )
  }
}

七该互、使用isRequired設(shè)置屬性為必須傳遞的值

 static propTypes={
    name:PropTypes.string.isRequired
  }

八米者、arrOf和objectOf多重嵌套類(lèi)型檢測(cè)

  // An array of a certain type
  optionalArrayOf: PropTypes.arrayOf(PropTypes.number),
 
  // An object with property values of a certain type
  optionalObjectOf: PropTypes.objectOf(PropTypes.number),
  //示例
  static propTypes = {
        todoList:PropTypes.arrayOf(PropTypes.shape({
            id:PropTypes.string.isRequired,
            text:PropTypes.string
        }))
    }

九、shape檢測(cè)不同對(duì)象的不同屬性的不同數(shù)據(jù)類(lèi)型

  // An object taking on a particular shape
  optionalObjectWithShape: PropTypes.shape({
    optionalProperty: PropTypes.string,
    requiredProperty: PropTypes.number.isRequired
  }),
  //示例
  static propTypes = {
     object:PropTypes.shape({
         name:PropTypes.string,
         age:PropTypes.number
      })
 }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末慢洋,一起剝皮案震驚了整個(gè)濱河市塘雳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌普筹,老刑警劉巖败明,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異太防,居然都是意外死亡妻顶,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)蜒车,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)讳嘱,“玉大人,你說(shuō)我怎么就攤上這事酿愧×ぬ叮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵嬉挡,是天一觀(guān)的道長(zhǎng)钝鸽。 經(jīng)常有香客問(wèn)我汇恤,道長(zhǎng),這世上最難降的妖魔是什么拔恰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任因谎,我火速辦了婚禮,結(jié)果婚禮上颜懊,老公的妹妹穿的比我還像新娘财岔。我一直安慰自己,他們只是感情好河爹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布匠璧。 她就那樣靜靜地躺著,像睡著了一般昌抠。 火紅的嫁衣襯著肌膚如雪患朱。 梳的紋絲不亂的頭發(fā)上鲁僚,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天炊苫,我揣著相機(jī)與錄音,去河邊找鬼冰沙。 笑死侨艾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拓挥。 我是一名探鬼主播唠梨,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼侥啤!你這毒婦竟也來(lái)了当叭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤盖灸,失蹤者是張志新(化名)和其女友劉穎蚁鳖,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赁炎,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡醉箕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了徙垫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讥裤。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖姻报,靈堂內(nèi)的尸體忽然破棺而出己英,到底是詐尸還是另有隱情,我是刑警寧澤吴旋,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布损肛,位于F島的核電站寒亥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏荧关。R本人自食惡果不足惜溉奕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望忍啤。 院中可真熱鬧加勤,春花似錦、人聲如沸同波。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)未檩。三九已至戴尸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間冤狡,已是汗流浹背孙蒙。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留悲雳,地道東北人挎峦。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像合瓢,于是被迫代替她去往敵國(guó)和親坦胶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容