米鼠商城

多块好省,买软件就上米鼠网

最新项目

  • 加油站系统开发

    预算:$150,000.00

    类别:软件开发>企业软件

    15602人关注
  • 筹金结算系统

    预算:$35,000.00

    类别:软件开发>其他软件开发

    15592人关注
  • 物业项目开发

    预算:$40,000.00

    类别:移动应用>其他移动应用

    17136人关注
  • CRM系统

    预算:$60,000.00

    类别:网站建设>网站开发

    19212人关注
  • 微信公众号账号开发

    预算:$18,000.00

    类别:移动应用>其他移动应用

    19444人关注
  • 网站商城开发

    预算:$50,000.00

    类别:网站建设>网站开发

    18412人关注

人才服务

靠谱的IT人才垂直招聘平台

prop-types的使用

  • lkj155
  • 2
  • 2019-05-20 12:00

1.设置一个

Son.propTypes = {

    optionalArray: PropTypes.array,//检测数组类型

    optionalBool: PropTypes.bool,//检测布尔类型

    optionalFunc: PropTypes.func,//检测函数(Function类型)

    optionalNumber: PropTypes.number,//检测数字

    optionalObject: PropTypes.object,//检测对象

    optionalString: PropTypes.string,//检测字符串

    optionalSymbol: PropTypes.symbol,//ES6新增的symbol类型

}

 

2.可以通过oneOfType实现多选择检测-可规定多个检测通过的数据类型

Son.propTypes = {

    number:PropTypes.oneOfType(

        [PropTypes.string,PropTypes.number]

    )

}

 

3.  通过oneOf实现多选择检测-可规定多个检测通过的变量的值

Son.propTypes = {

    number:PropTypes.oneOf( [12,13])

}

 

4. arrayOf,objectOf实现多重嵌套检测

如果我们检测的是基本类型的变量,那么这自然是很简单的,但当我们要检测的是一个引用类型的变量呢?当我们除了检测这个变量是否符合规定的引用类型外(对象/阵列),还想要进一步检测对象中的属性变量或阵列中数组元素的数据类型时,单靠上面的方法已经不能满足要求了。这时候就要用到PropTypes的arrayOf,objectOf方法。

arrayOf接收一个参数,这个参数是规定的数组元素的数据类型.objectOf接收的参数则是属性的数据类型。

Son.propTypes = {

    array:PropTypes.arrayOf(PropTypes.number)

}

 

5 . 通过形状方法检测目标对象不同属性的不同数据类型

如果你认真思考一下的话,你会发现4中的objectOf有一个缺陷,就是它内部的属性的数据类型被强行规定为一种,但通常一个对象里应该是有多种不同类型的属性了,那么这时候objectOf就不符合要求了,我们应该使用形状方法,其用法:

Son.propTypes = {

    object:PropTypes.shape({

    name:PropTypes.string,

    age:PropTypes.number

})

6. 通过isRequired检测道具中某个必要的属性(如果该属性不存在就报错)

有时候,我们在对某个变量进行类型检测时,我们不仅要求它符合预期的类型,同时也要求它是必须写入的,这时候就要用到isRequired。

Son.propTypes = {

    number:PropTypes.number.isRequired

}

 

7. 应对更复杂的类型检测 - 将PropTypes的属性值写成函数

Son.propTypes = {

    prop:function(props,propName,componentName){

        if(/*判断条件*/){

            return new Error(/*错误的参数*/)

        }   

    }

}

Son.propTypes = {

    email:function(props,propName,componentName){

        if(!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(props[propName])){

            return new Error('组件' + componentName+ '里的属性' + propName + '不符合邮箱的格式');

        }

     }

}



这里给大家推荐一个在线软件复杂项交易平台:米鼠网 https://www.misuland.com

米鼠网自成立以来一直专注于从事软件项目人才招聘软件商城等,始终秉承“专业的服务,易用的产品”的经营理念,以“提供高品质的服务、满足客户的需求、携手共创双赢”为企业目标,为中国境内企业提供国际化、专业化、个性化、的软件项目解决方案,我司拥有一流的项目经理团队,具备过硬的软件项目设计和实施能力,为全国不同行业客户提供优质的产品和服务,得到了客户的广泛赞誉。

猜你喜欢

评论留言