React中的Props類(lèi)型校驗(yàn)和默認(rèn)值詳解
一、props規(guī)則校驗(yàn)
安裝 prop-types 包
$ npm install prop-types
導(dǎo)入 propTypes 對(duì)象
import propTypes from 'prop-types';
組件名.propTypes = {} 設(shè)置組件 傳參規(guī)則
Comp.propTypes = {
param: propTypes.array // Comp組件 的 param 參數(shù)必須是 數(shù)組類(lèi)型
}
示例:
// props 類(lèi)型校驗(yàn)規(guī)則
import React from 'react';
// 1. npm i prop-types
// 2. 導(dǎo)入 propTypes 對(duì)象
import PropTypes from "prop-types";
function Son({list}) {
return (
<div>
{list.map(item => <p key={item}>{item}</p>)}
</div>
)
}
// 3. 組件名.propTypes = {} 給組件設(shè)置規(guī)則
Son.PropTypes={
// 4. 各字段設(shè)置規(guī)則
list: PropTypes.array // Son的list參數(shù)必須是 數(shù)組形式
}
class App extends React.Component {
render() {
return (
<div>
<Son list="我企鵝親子裝"/>
</div>
)
}
}
export default App;
報(bào)錯(cuò)提示如下:

四種常見(jiàn)結(jié)構(gòu)
- 常用類(lèi)型:
array、number、bool、string、func、object、symbol - React元素類(lèi)型:
element - 必填項(xiàng):
isRequired - 特定的結(jié)構(gòu)對(duì)象:
shape({})
核心代碼:
// 1.類(lèi)型
optionalFun: PropTypes.fun;
// 2.必填項(xiàng)
requiredFun: PropTypes.fun.isRequired;
// 3. // 可以指定一個(gè)對(duì)象由特定的類(lèi)型值組成
optionalObjectWithShape: PropTypes.shape({
color: PropTypes.string,
fontSize: PropTypes.number
}),
二、props默認(rèn)值
1.函數(shù)式默認(rèn)值
1.1 函數(shù)參數(shù)默認(rèn)值(新版推薦)
示例:
import React from "react";
// 1. 函數(shù)參數(shù)默認(rèn)值
function Son1({defaultTime = 10}) {
return (
<div>The timer is : {defaultTime}</div>
)
}
class App extends React.Component {
render() {
return (
<div>
<Son1 />
</div>
)
}
}
export default App;

1.2 defaultProps 設(shè)置默認(rèn)值
function Son2({defaultTime}) {
return (
<div>The second timer is: {defaultTime}</div>
)
}
// 2. defaultProps 設(shè)置默認(rèn)值
Son2.defaultProps = {
defaultTime: 100
}
class App extends React.Component {
render() {
return (
<div>
<Son1 />
<Son2 />
</div>
)
}
}

2.類(lèi)式默認(rèn)值
2.1 defaultProps
class Son3 extends React.Component {
render() {
return (
<div>The defaultTimer is : {this.props.defaultTime}</div>
)
}
}
// defaultProps 設(shè)置默認(rèn)值
Son3.defaultProps = {
defaultTime: 3333
}
2.2 類(lèi)靜態(tài)屬性聲明
class Son4 extends React.Component {
static defaultProps ={
defaultTime: 66666
}
render() {
return (
<div>The defaultTimer is : {this.props.defaultTime}</div>
)
}
}
完整示例
// props默認(rèn)值
import { func } from "prop-types";
import React from "react";
// 1.1 函數(shù)參數(shù)默認(rèn)值
function Son1({defaultTime = 10}) {
return (
<div>The timer is : {defaultTime}</div>
)
}
function Son2({defaultTime}) {
return (
<div>The second timer is: {defaultTime}</div>
)
}
// 1.2 defaultProps 設(shè)置默認(rèn)值
Son2.defaultProps = {
defaultTime: 100
}
class Son3 extends React.Component {
render() {
return (
<div>The defaultTimer is : {this.props.defaultTime}</div>
)
}
}
// 2.1 函數(shù) defaultProps 設(shè)置默認(rèn)值
Son3.defaultProps = {
defaultTime: 3333
}
// 2.2 靜態(tài)屬性聲明
class Son4 extends React.Component {
static defaultProps ={
defaultTime: 66666
}
render() {
return (
<div>The defaultTimer is : {this.props.defaultTime}</div>
)
}
}
class App extends React.Component {
render() {
return (
<div>
<Son1 />
<Son2 />
<Son3 />
<Son4 />
</div>
)
}
}
export default App;
如圖:

總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
在Create React App中使用CSS Modules的方法示例
本文介紹了如何在 Create React App 腳手架中使用 CSS Modules 的兩種方式。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。2019-01-01
React使用highlight.js Clipboard.js實(shí)現(xiàn)代碼高亮復(fù)制
這篇文章主要為大家介紹了React使用highlight.js Clipboard.js實(shí)現(xiàn)代碼高亮復(fù)制功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
React實(shí)現(xiàn)數(shù)字滾動(dòng)組件numbers-scroll的示例詳解
數(shù)字滾動(dòng)組件,也可以叫數(shù)字輪播組件,這個(gè)名字一聽(tīng)就是非常普通常見(jiàn)的組件。本文將利用React實(shí)現(xiàn)這一組件,感興趣的小伙伴可以了解一下2023-03-03
在React中強(qiáng)制重新渲染的4 種方式案例代碼
這篇文章主要介紹了在React中強(qiáng)制重新渲染的4 種方式,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-12-12
React中memo useCallback useMemo方法作用及使用場(chǎng)景
這篇文章主要為大家介紹了React中三個(gè)hooks方法memo useCallback useMemo的作用及使用場(chǎng)景示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助2023-03-03
解決React報(bào)錯(cuò)Expected?`onClick`?listener?to?be?a?function
這篇文章主要為大家介紹了React報(bào)錯(cuò)Expected?`onClick`?listener?to?be?a?function解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

