PropTypes与DefaultProps

每个组件都有自己的props参数,这些组件接收外部传来的props,他的类型要做一个校验,也就是说对组件做属性强校验。。这里涉及到两个基础的概念,叫做propTypes 和defaultProps。
第一步引入:
todoItem为组件,只是举一个例子,可以换成其他的。设置content属性类型为字符串,handleItemDelete为函数,index为数字。
一般开发的时候都建议把Proptyps写上去,这样传值不对的时候,就会有一个明显的警告。

import Proptyps from 'prop-types';
TodoItem.propTypes = {
  content: Proptyps.string,
  handleItemDelete: Proptyps.func,
  index: Proptyps.number
}

如果在子组件写一个父组件传值中没有的参数,代码没有任何的错误,只不过参数没有接收,不会显示而已,这个时候对于没有传递的参数,是不会去做校验,如果这个参数是必须要的,可以强制去做校验,例如

import Proptyps from 'prop-types';
TodoItem.propTypes = {
  test: Proptyps.string.isRequired
}

isRequired表示父组件必须要向子组件传递,不传递,会报警告。

有的时候子组件要求父组件必须要传这个test,但有时候父组件实在没办法传这个test.那么可以给test定义一个默认值.

import Proptyps from 'prop-types';
TodoItem.propTypes = {
  test: Proptyps.string.isRequired
}
TodoItem.defaultProps = {
  test: 'hello world'
}

这样就要求父组件必须传,不传就显示默认值。
content的类型,是以下类型种的一个,不仅可以是string类型,还可以是number类型。

import Proptyps from 'prop-types';
TodoItem.propTypes = {
  content: Proptyps.oneOfType([Proptyps.string, Proptyps.number])
}

下面这个arrayOf表示content是个数组,数组里面的内容可以是string,也可以是number

import Proptyps from 'prop-types';
TodoItem.propTypes = {
  content: Proptyps.arrayOf(Proptyps.string, Proptyps.number)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值