react——子组件props字段类型类型限制——默认值设置。

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react——子组件props字段类型类型限制——默认值设置。相关的知识,希望对你有一定的参考价值。

安装

react15.5之前类型的限制包,需要手动安装

yarn add  prop-types

导入

import types from 'prop-types'

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

npm i -S prop-types

# 在组件中导入
import PropTypes from 'prop-types'


# 函数组件
function App()
// 验证规则
App.propTypes = 
    prop-name:PropTypes.string


# 类组件
class App extends Component

App.propTypes = 
    prop-name:PropTypes.string


💞约束类型
https://zh-hans.reactjs.org/docs/typechecking-with-proptypes.html#proptypes
- 类型: array、bool、func、number、object、string
- React元素类型:element
- 必填项:isRequired
- 特定结构的对象: shape()
- 自定义类型
Child.propTypes=
    name:types.number,
    age:types.number.isRequired,//属性它必须是一个数字类型,且此属性必须要存在
    arr:types.arrayOf(types.number),//定义数组类型,并且指定元素的类型
    object: types.object,//对象类型
    sex:types.oneOf(["男","女"]),
    obj:types.shape(//对象key值约束
        id:types.oneOfType([types.number, types.string]),// 两个类型选择
        title:types.string,//字符串
        fn:types.func//函数类型
    ),
    phone:(props,key)=>  // 自定义规则(函数)
        // props,当前的属性列表对象
        // key 当前的属性名称
        let value = props[key];// 得到属性的值 
        if (!/^1[3-9]\\d9$/.test(value)) 
            return new Error('有误')// 如果不正确,一定要返回一个Error对象,这样就可以在控制台中看到信息,不要throw
        
    


默认值

如果props没有属性没有传过数据,为了不让程序异常,可以设置其默认值。
语法:

此写法是类组件和函数组件通用的写法
// 字段类型限制
Child.propTypes = 
  age: types.any,


// 默认值 直接赋值就可以
Child.defaultProps = 
  age: 1000

组件内部的写法:

import React,  Component  from 'react';
import types from 'prop-types'
class Child extends Component 
    static propType =
        age:types.number,
    
    static defaultProps = 
        age:20
    
    render() 
        let name = "勇敢牛牛" = this.props;//在此处写的默认,属于开发者,自主去写的,有可能有的开发者他就不定义
        let  age = this.props
        return (
            <div>
                <h2>我是子组件收到的props组件=name</h2>/*勇敢牛牛 */
                <h2>我是子组件收到的props组件=age</h2>/* 20*/
            </div>
        );
    

class App extends Component 
    render() 
        return (
            <div>
                <Child></Child>
            </div>
        );
    


export default App;

以上是关于react——子组件props字段类型类型限制——默认值设置。的主要内容,如果未能解决你的问题,请参考以下文章

父子组件传值props

react传值,路由

React.Children

React组件进阶

React组件进阶

React组件进阶