第二十四章 案例TodoList 之props限制

简介: 第二十四章 案例TodoList 之props限制

本小节,我们为案例写的所有props标签属性,追加一些类型和必要性的限制。在React中对props进行类型限制是很重要的,原因如下:

  1. 防止错误和bug: 通过对props进行类型限制,可以在开发过程中及早发现错误和bug。这可以节省后期调试的时间和精力。
  2. 提高代码可读性和可维护性: 通过明确定义组件期望的props类型,可以使其他开发人员更容易理解如何使用组件以及传递什么数据。这也可以使代码库随着时间的推移更容易维护。
  3. 提高代码文档化程度: 通过定义组件期望的props类型,它作为组件的一种文档形式。这可以使其他开发人员更容易理解如何使用组件以及传递什么数据。

安装并引入

npm i prop-types

react里面并没有集成标签属性的限制,因为有些习惯使用,而有些不使用,看个人需要以及公司规范。

使用的时候需要在组件头部引入

import PropTypes from 'prop-types'

这里的别名我们还是使用我们之前学习时的别名

改造组件

  • Header组件
  // 对props做类型和必要性的限制
  static propTypes = {
    addTodo: PropTypes.func.isRequired
  }

限制属性addTodo的类型必须是一个方法且必传。

  • List组件
  // 对props做类型和必要性的限制
  static propTypes = {
    updateTodo: PropTypes.func.isRequired,
    todos: PropTypes.array.isRequired
  }

限制属性updateTodo的类型必须是一个方法且必传,限制属性todos必须是一个数组且必传。

  • 查看效果

当我错误给addTodo属性赋值为1时,看看报错否?

Warning: Failed prop type: Invalid prop `addTodo` of type `number` supplied to `Header`, expected `function`.

报错告诉我,它希望这个值是一个函数而不是一个数值,说明对props的限制起作用了。

小总结

  • 对props做限制需要你手动的安装依赖库:npm i prop-types
  • 在组件内部需要定义一个静态的属性:propTypes,该属性是一个对象,里面是你写的限制props的规则。
  • 为了组件的维护性和可读性我们推荐都对props做一些必要性的限制。
相关文章
|
定位技术 Android开发
uniapp获取wifi连接状态
uniapp获取wifi连接状态
1248 0
|
存储
uniApp监听左右滑动事件
uniApp监听左右滑动事件
1163 0
|
移动开发 Android开发 iOS开发
uniapp开发H5及app监听返回事件(以及监听不到的处理方法)
uniapp开发H5及app监听返回事件(以及监听不到的处理方法)
2752 0
【echarts报错】line series not exists,should be same with series name or data name
【echarts报错】line series not exists,should be same with series name or data name
763 0
|
9月前
|
索引
【Flutter 开发必备】AzListView 组件全解析,打造丝滑索引列表!
在 Flutter 开发中,AzListView 是实现字母索引分类列表的理想选择。它支持 A-Z 快速跳转、悬浮分组标题、自定义 UI 和高效性能,适用于通讯录、城市选择等场景。本文将详细解析 AzListView 的核心参数和实战示例,助你轻松实现流畅的索引列表。
472 7
|
JSON Dart API
Flutter dio http 封装指南说明
本文介绍了如何实现一个通用、可重构的 Dio 基础类,包括单例访问、日志记录、常见操作封装以及请求、输出、报错拦截等功能。
462 2
Flutter dio http 封装指南说明
|
缓存 移动开发 JavaScript
WKWebView对网页和js,css,png等资源文件的缓存机制及如何刷新缓存
WKWebView对网页和js,css,png等资源文件的缓存机制及如何刷新缓存
1074 1
|
开发框架 前端开发 UED
【Flutter前端技术开发专栏】Flutter中的下拉刷新与上拉加载更多
【4月更文挑战第30天】在Flutter移动应用开发中,下拉刷新和上拉加载更多能提升用户体验和用户参与度。通过`RefreshIndicator`组件和`ScrollController`实现下拉刷新与上拉加载。`RefreshIndicator`包裹可滚动Widget,`ScrollController`监听滚动事件以判断是否到达底部。性能优化包括避免重复加载、使用防抖技术和异步加载数据。参考Flutter官方文档和相关教程可进一步学习。
896 0
【Flutter前端技术开发专栏】Flutter中的下拉刷新与上拉加载更多
|
开发框架 资源调度 JavaScript
uniapp本地导出表格excel
uniapp本地导出表格excel
2222 1
|
移动开发 前端开发 JavaScript
uniapp中IO模块(管理本地文件系统)的常用功能封装
uniapp中IO模块(管理本地文件系统)的常用功能封装
1993 1