zoukankan      html  css  js  c++  java
  • react props-type

    对于组件来说,props是外部传入的,无法保证组件使用者传入什么格式的数据,简单来说就是组件调用者可能不知道组件封装着需要什么样的数据,如果传入的数据不对,可能会导致程序异常,所以必须要对于props传入的数据类型进行校验。

    安装校验包 

    npm i -S prop-types

    # 在组件中导入

    import PropTypes from 'prop-types'

    # 函数组件

    function App(){}

    // 验证规则

    App.propTypes = {

        prop-name:PropTypes.string

    }

     

    # 类组件

    class App extends Component{

        // 类内部完成 检查

    static propTypes = {

       prop-name:PropTypes.string

    }

    }

     

    ² 约束类型

    https://zh-hans.reactjs.org/docs/typechecking-with-proptypes.html#proptypes

    - 类型: arrayboolfuncnumberobjectstring

    - React元素类型:element

    - 必填项:isRequired

    - 特定结构的对象: shape({})

    父组件

    import React, { Component } from 'react'
    import Cmp2fun from './pages/Cmp2fun'
    import Cmp2class from './pages/Cmp2class'
    
    export default class App extends Component {
      render() {
        return (
          <div>
            {/* props.children 获取组件内中的数据 插槽 slot */}
            {/* <Cmp2fun a={1} b={2} /> */}
            {/* 默认值 如要传入值,则传入的值为主,默认值为辅 */}
            <Cmp2fun a={1} />
            <Cmp2class a={1} b={2} />
    
          </div>
        )
      }
    }

    函数组件

    import React from 'react';
    // 引入proptypes类型检查
    import PropTypes from 'prop-types';
    
    // 函数组件
    const Cmp2fun = ({ a, b }) => {
    
      console.log(a + b);
    
      return (
        <div>
    
        </div>
      );
    }
    
    // 类型检查
    Cmp2fun.propTypes = {
      a: PropTypes.number,
      b: PropTypes.number
    }
    
    // 默认值
    Cmp2fun.defaultProps = {
      b: 1000
    }
    
    export default Cmp2fun;

    类组件

    import React, { Component } from 'react'
    
    // 引入proptypes类型检查
    import PropTypes from 'prop-types';
    
    export default class Cmp2class extends Component {
    
      // 静态方法不能使用this 静态方法属于类的 调用 类.方法名/属性名
      static propTypes = {
        // 类型前面是数字且还是必须填写输入的
        a: PropTypes.number.isRequired,
        b: PropTypes.number
      }
      // 给props添加默认值
      static defaultProps = {
        b: 100
      }
    
      render() {
        let { a, b } = this.props
        console.log(a + b);
        return (
          <div>
    
          </div>
        )
      }
    }
    
    // 类型检查
    /* Cmp2class.propTypes = {
      a: PropTypes.number,
      b: PropTypes.number
    } */
    
    // export default Cmp2class
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    使用@ConditionalOnProperty注解
    Java注解Annotation与自定义注解详解
    Windows下使用service.bat安装tomcat服务, 启动停止tomcat服务
    Tomcat启动异常 java.net.BindException: Cannot assign requested address: JVM_Bind
    tomcat部署应用仅需ip和port访问
    dwr.jar简介
    Hibernate3 jar包的作用[转]
    org.springframework.orm.hibernate3.LocalSessionFactoryBean
    <iframe>和<frame>区别
    ServletActionContext.getRequest().getSession() 和 ActionContext.getContext().getSession()
  • 原文地址:https://www.cnblogs.com/ht955/p/14667634.html
Copyright © 2011-2022 走看看