https://juejin.im/post/5b0bb85af265da091337d236
引入
定义 let prodList = []
, 你代码中 prodList.push(...)
但是初始的时候被设置 prodList = 123
而且没有任何提示, 那运行 push(...)
肯定要报未知方法的错误
这种问题在自由的 JavaScript
世界很普遍,如果在 编译
运行
两个阶段都没提示的话,排错是很麻烦的,全靠经验和对业务的熟悉 (陈年老项目又没文档简直是地狱)
所以我们要把问题消灭在萌芽中,就是申明对象的时候同时把类型也定义掉了, react
的自带方案是 PropTypes
组件
当然还有 Flow
TypeScript
我个人比较喜欢 TypeScript
这在以后的进阶文章我再写
PropTypes
是一个在 编码
阶段提供类型检查的方案 有提示总是好的,那我们开始
PropTypes 使用
先来个基础简单的例子
1 简单例子
- 导入包
1 | import PropTypes from 'prop-types' |
- 编写组件
1 | class Greeting extends React.Component { |
- 编写类型检查
1 | Greeting.propTypes = { |
设置
name
属性类型为string
字符串
- 容器
1 | <div> |
显然这里设置数字类型和定义不一致
- 页面打印
发现页面能正常显示,没有错误,这是因为错误以 console
方式反馈
2 不同的验证器
1 | // 数组、布尔、函数、数字、对象、字符串、symbol |
3 限制单个子代
1 | // 组件 |
4 属性默认值
1 | // 组件 |
如果父组件没有设置并传入 name
,defaultProps
将确保 this.props.name
将有一个默认值。