zoukankan      html  css  js  c++  java
  • react类型检查

    react类型检查

    react使用prop-types库进行类型检查。

    PropTypes 提供一系列验证器,可用于确保组件接收到的数据类型是有效的。

    当传入的 prop 值类型不正确时,JavaScript 控制台将会显示警告。出于性能方面的考虑,propTypes 仅在开发模式下进行检查。

      // 你可以将属性声明为 JS 原生类型,默认情况下
      // 这些属性都是可选的。
      optionalArray: PropTypes.array,
      optionalBool: PropTypes.bool,
      optionalFunc: PropTypes.func,
      optionalNumber: PropTypes.number,
      optionalObject: PropTypes.object,
      optionalString: PropTypes.string,
      optionalSymbol: PropTypes.symbol,
    
    import React,{Component} from 'react';
    import One from "./One"
    class App extends Component{
      render(){
        let username = "张三"
        let userArr = [
          {
            id:1,sex:"男"
          },
          {
            id:2,sex:"女"
          }
        ]
        return (
          <div>
            <One userArr={userArr} username={username}></One>
          </div>
        )
      }
    }
    
    export default App;
    
    

    子组件接收到数据,采用PropTypes检查

    username:PropTypes.string 简单单个的数据类型

    userArr:PropTypes.oneOfType([PropTypes.string,PropTypes.array]) 可以指定一个数组只要符合某一个类型就可以

    userArr:PropTypes.arrayOf(PropTypes.object)可以指定一个数组由某一类型的元素组成

    optionalObjectOf: PropTypes.objectOf(PropTypes.number)可以指定一个对象由某一类型的值组成

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

    import React, { Component } from 'react'
    import PropTypes from 'prop-types';
    export default class One extends Component {
        //第一种:采用静态static的写法
        static propTypes={
            username:PropTypes.string,
            // userArr:PropTypes.array
    
            // 规定外部传入的属性userArr可以是stirng or array
            // userArr:PropTypes.oneOfType([PropTypes.string,PropTypes.array])
    
            // 规定外部传入的属性userArr是一个数组,数组里面包含的对象结构
            // userArr:PropTypes.arrayOf(PropTypes.object)
    
            //外部必须传入userArr属性,这个是一个数组,数组里面每一项是一个对象结构
            //每个对象结构,有两个字段必填,一个number的id,一个string的sex
            userArr:PropTypes.arrayOf(PropTypes.shape({
                id: PropTypes.number.isRequired,
                sex: PropTypes.string.isRequired
            })).isRequired
        }
        //同时对于属性,组件是可以定义默认属性的
        static defaultProps = {
            username:"哈哈哈"
        }
        render() {
            return (
                <div>
                    one --- {this.props.username}
                </div>
            )
        }
    }
    
    //第二种;采用原型链的写法:
    // One.propTypes = {
    //     username:PropTypes.number
    // }
    
    
    
    请用今天的努力,让明天没有遗憾。
  • 相关阅读:
    .Net Core使用Options模式来使用配置项
    git忽略已经提交的文件(git忽略文件不起作用)
    AirTest
    VSCode搭建rust开发环境
    动态编译和加载java代码
    JavaScript动态应用代码(有点像Java里的drools)
    Win10 Rust 编译报错: linking with `link.exe` failed: exit code: 1181
    git 拉取仓库的单个目录
    dart里实现类似Java里的--classpath的功能
    Rust离线安装
  • 原文地址:https://www.cnblogs.com/cupid10/p/13625853.html
Copyright © 2011-2022 走看看