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参数

prop-types包

yarn add prop-types -S

index.jsx

import React, { Component } from 'react'
import Child from './Child'
import { Abc } from './Abc'

const abc = new Abc()

class Index extends Component {

  state = {
    count: 0,
  }

  render() {
    return (
      <>
        <Child title={new Abc()}>
          <div>abc</div>
          <div>def</div>
        </Child>
      </>
    );
  }
}

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

Child.jsx

import React, { Component } from 'react'
import { 
  string, 
  node, 
  element, 
  elementType, 
  instanceOf,
  oneOf,
  oneOfType,
  number,
  arrayOf,
  shape,
  exact
} from 'prop-types'
import { Abc } from './Abc'

class Child extends Component {
  static defaultProps = {
    title: 'default props value'
  }

  static propTypes = {
    title: node //数字、字符串、元素或包含这些类型的数组(或片段)。
    //title:element//react元素<MyComponent />
    //title:elementType//react元素类型MyComponent
    //title: instanceOf(Abc) //是否是Abc的实例
    // title: oneOf(['aaa', 'bbb']) //'aaa','bbb'中的第一个
    // title: oneOfType([//String类型和number类型中的一种
    //   string, 
    //   number
    // ])
    // title: arrayOf(number)//number类型的数组
    // title: shape({//传入的title参数有string类型的aaa和number类型的ddd
    //   aaa: string,//其中ddd是必须的,还可有别的属性
    //   ddd: number.isRequired
    // }),

    // title: exact({//精准匹配(和shape相比)
    //   abc: string,
    //   def: number.isRequired
    // }),

    // title(props, propName, componentName) {//对title进行自定义判断
    //   if (props.title.abc !== 'aaa') {//三个参数 属性 属性名 组件名
    //     throw new Error('你传的abc的值不正确')
    //   }
    // }
  }

  render() {
    return (
      <div>
        {this.props.children}
      </div>
    )
  }
}

export default Child;

Abc.js

export class Abc {
  render() {
    return 'abc'
  }
}
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:16:46  更:2021-08-21 15:18:47 
 
开发: 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年12日历 -2024/12/27 5:40:05-

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