如何使用PropTypes设置所需的道具类型
由于JavaScript是一种动态类型的语言,因此我们实际上没有办法在编译时强制使用变量的类型,并且如果我们传递无效的类型,则它们将在运行时失败,或者如果类型兼容则给出怪异的结果,但是我们所期望的。
流和打字稿可以提供很多帮助,但是React可以直接帮助props类型,甚至在运行代码之前,我们的工具(编辑器,lints)也可以检测到何时传递了错误的值:
import PropTypes from 'prop-types'
import React from 'react'
class BlogPostExcerpt extends Component {
render() {
return (
<div>
<h1>{this.props.title}</h1>
<p>{this.props.description}</p>
</div>
)
}
}
BlogPostExcerpt.propTypes = {
title: PropTypes.string,
description: PropTypes.string
}
export default BlogPostExcerpt
我们可以使用哪些类型
这些是我们可以接受的基本类型:
- PropTypes.array
- PropTypes.bool
- PropTypes.func
- PropTypes.number
- PropTypes.object
- PropTypes.string
- PropTypes.symbol
我们可以接受以下两种类型之一:
PropTypes.oneOfType([
PropTypes.string,
PropTypes.number
]),
我们可以接受许多值之一:
PropTypes.oneOf(['Test1', 'Test2']),
我们可以接受一个类的实例:
PropTypes.instanceOf(Something)
我们可以接受任何React节点:
PropTypes.node
甚至根本没有任何类型:
PropTypes.any
数组具有一种特殊的语法,我们可以使用它来接受特定类型的数组:
PropTypes.arrayOf(PropTypes.string)
对象,我们可以使用
PropTypes.shape({
color: PropTypes.string,
fontSize: PropTypes.number
})
要求属性
追加中isRequired
如果缺少该属性,则对任何PropTypes选项进行设置将导致React返回错误:
PropTypes.arrayOf(PropTypes.string).isRequired,
PropTypes.string.isRequired,
免费下载我的反应手册
更多反应教程:
- 一个React简单的应用示例:通过API获取GitHub用户信息
- 用React构建一个简单的计数器
- 用于React开发的VS代码设置
- 如何通过React Router将道具传递给子组件
- 使用Electron和React创建一个应用
- 教程:使用React创建电子表格
- 学习React的路线图
- 了解如何使用Redux
- JSX入门
- 样式化的组件
- Redux Saga简介
- React Router简介
- React简介
- 反应组件
- 虚拟DOM
- 反应事件
- 反应状态
- 反应道具
- 反应片段
- React Context API
- 反应PropTypes
- 反应概念:声明式
- React:如何在点击时显示其他组件
- 如何在React JSX内部循环
- 道具与状态在React中
- 您应该使用jQuery还是React?
- 使用React需要知道多少JavaScript?
- 盖茨比介绍
- 如何在React中引用DOM元素
- React中的单向数据流
- 反应高阶组件
- 反应生命周期事件
- 反应概念:不变性
- 反应概念:纯度
- React钩子简介
- create-react-app简介
- 反应概念:组成
- React:演示组件与容器组件
- React中的代码拆分
- 使用React进行服务器端渲染
- 如何安装React
- React中的CSS
- 在React中使用SASS
- 在React中处理表单
- 反应严格模式
- 反应门户
- 反应渲染道具
- 测试React组件
- 如何在React中将参数传递给事件处理程序
- 如何处理React中的错误
- 如何在JSX中返回多个元素
- React中的条件渲染
- 反应,如何将道具转移到子组件
- 如何在React中获取输入元素的值
- 如何使用useState React钩子
- 如何使用useCallback React钩子
- 如何使用useEffect React钩子
- 如何使用useMemo React钩子
- 如何使用useRef React钩子
- 如何使用useContext React钩子
- 如何使用useReducer React钩子
- 如何将您的React应用程序连接到相同来源的后端
- 到达路由器教程
- 如何使用React Developer Tools
- 如何学习React
- 如何调试React应用程序
- 如何在React中呈现HTML
- 如何修复`dangerouslySetInnerHTML`与React中的错误不匹配
- 我如何解决React登录表单状态和浏览器自动填充的问题
- 如何在本地主机上的React应用程序中配置HTTPS
- 如何修复React中的“渲染其他组件时无法更新组件”错误
- 我可以在条件内使用React挂钩吗?
- 将useState与对象一起使用:如何更新
- 如何使用React和Tailwind在代码块中移动
- React,添加到DOM时将焦点放在React中的一个项目上
- 反应,在doubleclick上编辑文本