IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> React:Props类型校验&默认值 -> 正文阅读

[JavaScript知识库]React:Props类型校验&默认值

一、props规则校验

  1. 安装 prop-types 包
$ npm install prop-types
  1. 导入 propTypes 对象
import propTypes from 'prop-types';
  1. 组件名.propTypes = {} 设置组件 传参规则
Comp.propTypes = {
	param: propTypes.array  // Comp组件 的 param 参数必须是 数组类型
}

示例:

// props 类型校验规则
import React from 'react';
// 1. npm i prop-types
// 2. 导入 propTypes 对象
import PropTypes from "prop-types";

function Son({list}) {
    return (
        <div>
            {list.map(item => <p key={item}>{item}</p>)}
        </div>
    )
}

// 3. 组件名.propTypes = {} 给组件设置规则
Son.PropTypes={
    // 4. 各字段设置规则
    list: PropTypes.array // Son的list参数必须是 数组形式
}

class App extends React.Component {
    render() {
        return (
            <div>
                <Son list="我企鹅亲子装"/>
            </div>
        )
    }
}

export default App;

报错提示如下:
在这里插入图片描述

规则说明

参见https://zh-hans.reactjs.org/docs/typechecking-with-proptypes.html
四种常见结构

  1. 常用类型:arraynumberboolstringfuncobjectsymbol
  2. React元素类型:element
  3. 必填项:isRequired
  4. 特定的结构对象:shape({})

核心代码:

// 1.类型
optionalFun: PropTypes.fun;

// 2.必填项
requiredFun: PropTypes.fun.isRequired;

// 3. // 可以指定一个对象由特定的类型值组成
optionalObjectWithShape: PropTypes.shape({
    color: PropTypes.string,
    fontSize: PropTypes.number
}),

二、props默认值

1.函数式默认值

1.1 函数参数默认值 (新版推荐)

示例:

import React from "react";

// 1. 函数参数默认值
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 设置默认值

function Son2({defaultTime}) {
    return (
        <div>The second timer is: {defaultTime}</div>
    )
}
// 2. defaultProps 设置默认值
Son2.defaultProps = {
    defaultTime: 100
}

class App extends React.Component {
    render() {
        return (
            <div>
                <Son1 />
                <Son2 />
            </div>
        )
    }
}

在这里插入图片描述

2.类式默认值

2.1 defaultProps

class Son3 extends React.Component {
    render() {
        return (
            <div>The defaultTimer is : {this.props.defaultTime}</div>
        )
    }
}
// defaultProps 设置默认值
Son3.defaultProps = {
    defaultTime: 3333
}

2.2 类静态属性声明

class Son4 extends React.Component {
    static defaultProps ={
        defaultTime: 66666
    }

    render() {
        return (
            <div>The defaultTimer is : {this.props.defaultTime}</div>
        )
    }
}

完整示例

// props默认值

import { func } from "prop-types";
import React from "react";

// 1.1 函数参数默认值
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 设置默认值
Son2.defaultProps = {
    defaultTime: 100
}

class Son3 extends React.Component {
    render() {
        return (
            <div>The defaultTimer is : {this.props.defaultTime}</div>
        )
    }
}

// 2.1 函数 defaultProps 设置默认值
Son3.defaultProps = {
    defaultTime: 3333
}

// 2.2 静态属性声明
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;

如图:
在这里插入图片描述

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-31 23:55:34  更:2022-03-31 23:55:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:51:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码