广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >React使用PropTypes实现类型检查功能
  • 132
分享到

React使用PropTypes实现类型检查功能

ReactPropTypes类型检查ReactPropTypesReact类型检查 2023-02-10 15:02:47 132人浏览 泡泡鱼
摘要

目录使用 PropTypes 进行类型检查PropTypes限制单个元素默认 Prop 值使用 PropTypes 进行类型检查 React 内置类型检查功能要在组件的 props

使用 PropTypes 进行类型检查

  • React 内置类型检查功能
  • 要在组件的 props 上进行类型检查,你只需配置特定的 propTypes 属性
  • propTypes 仅在开发模式下进行检查
import PropTypes from 'prop-types'
class Greeting extends React.Component {
  render() {
    return (
      <h1>Hello, {this.props.name}</h1>
    );
  }
}
Greeting.propTypes = {
 name: PropTypes.string
}
// 当传入的 prop 值类型不正确时,javascript 控制台将会显示警告

PropTypes

   import PropTypes from 'prop-types';
   MyComponent.propTypes = {
    // 你可以将属性声明为 js 原生类型,默认情况下
    // 这些属性都是可选的。
    optionalArray: PropTypes.array,
    optionalBool: PropTypes.bool,
    optionalFunc: PropTypes.func,
    optionalNumber: PropTypes.number,
    optionalObject: PropTypes.object,
    optionalString: PropTypes.string,
    optionalSymbol: PropTypes.symbol,
    // 任何可被渲染的元素(包括数字、字符串、元素或数组)
    // (或 Fragment) 也包含这些类型。
    optionalnode: PropTypes.node,
    // 一个 React 元素。
    optionalElement: PropTypes.element,
    // 一个 React 元素类型(即,MyComponent)。
    optionalElementType: PropTypes.elementType,
    // 你也可以声明 prop 为类的实例,这里使用
    // JS 的 instanceof 操作符。
    optionalMessage: PropTypes.instanceOf(Message),
    // 你可以让你的 prop 只能是特定的值,指定它为
    // 枚举类型。
    optionalEnum: PropTypes.oneOf(['News', 'Photos']),
    // 一个对象可以是几种类型中的任意一个类型
    optionalUNIOn: PropTypes.oneOfType([
      PropTypes.string,
      PropTypes.number,
      PropTypes.instanceOf(Message)
    ]),
    // 可以指定一个数组由某一类型的元素组成
    optionalArrayOf: PropTypes.arrayOf(PropTypes.number),
    // 可以指定一个对象由某一类型的值组成
    optionalObjectOf: PropTypes.objectOf(PropTypes.number),
    // 可以指定一个对象由特定的类型值组成
    optionalObjectWithShape: PropTypes.shape({
      color: PropTypes.string,
      fontSize: PropTypes.number
    }),
    // An object with warnings on extra properties
    optionalObjectWithStrictShape: PropTypes.exact({
      name: PropTypes.string,
      quantity: PropTypes.number
    }),   
    // 你可以在任何 PropTypes 属性后面加上 `isRequired` ,确保
    // 这个 prop 没有被提供时,会打印警告信息。
    requiredFunc: PropTypes.func.isRequired,
    // 任意类型的数据
    requiredAny: PropTypes.any.isRequired,
    // 你可以指定一个自定义验证器。它在验证失败时应返回一个 Error 对象。
    // 请不要使用 `console.warn` 或抛出异常,因为这在 `onOfType` 中不会起作用。
    customProp: function(props, propName, componentName) {
      if (!/matchme/.test(props[propName])) {
        return new Error(
          'Invalid prop `' + propName + '` supplied to' +
          ' `' + componentName + '`. Validation failed.'
        );
      }
    },
    // 你也可以提供一个自定义的 `arrayOf` 或 `objectOf` 验证器。
    // 它应该在验证失败时返回一个 Error 对象。
    // 验证器将验证数组或对象中的每个值。验证器的前两个参数
    // 第一个是数组或对象本身
    // 第二个是他们当前的键。
    customArrayProp: PropTypes.arrayOf(function(propValue, key, componentName, location, propFullName) {
      if (!/matchme/.test(propValue[key])) {
        return new Error(
          'Invalid prop `' + propFullName + '` supplied to' +
          ' `' + componentName + '`. Validation failed.'
        );
      }
    })
  };

限制单个元素

通过 PropTypes.element 来确保传递给组件的 children 中只包含一个元素

   import PropTypes from 'prop-types';
   class MyComponent extends React.Component {
     render() {
       // 这必须只有一个元素,否则控制台会打印警告。
       const children = this.props.children;
       return (
         <div>
           {children}
         </div>
       );
     }
   }
   MyComponent.propTypes = {
     children: PropTypes.element.isRequired
   };

默认 Prop 值

可以通过配置特定的 defaultProps 属性来定义 props 的默认值

class Greeting extends React.Component {
  render() {
    return (
      <h1>Hello, {this.props.name}</h1>
    );
  }
}
// 指定 props 的默认值:
Greeting.defaultProps = {
  name: 'Stranger'
};
// 渲染出 "Hello, Stranger":
ReactDOM.render(
  <Greeting />,
  document.getElementById('example')
);

defaultProps 用于确保 this.props.name 在父组件没有指定其值时,有一个默认值。propTypes 类型检查发生在 defaultProps 赋值后,所以类型检查也适用于 defaultProps。

到此这篇关于React使用PropTypes实现类型检查功能的文章就介绍到这了,更多相关React PropTypes类型检查内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: React使用PropTypes实现类型检查功能

本文链接: https://www.lsjlt.com/news/195564.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • React使用PropTypes实现类型检查功能
    目录使用 PropTypes 进行类型检查PropTypes限制单个元素默认 Prop 值使用 PropTypes 进行类型检查 react 内置类型检查功能要在组件的 props ...
    99+
    2023-02-10
    React PropTypes类型检查 React PropTypes React类型检查
  • Groovy 2.0静态类型检查及如何使用编译功能
    Groovy 2.0静态类型检查及如何使用编译功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Groovy开发团队近日发布了2.0的版本,Groovy是基于Java虚拟机(J...
    99+
    2023-06-17
  • JavaScript数据类型检测功能如何实现
    本文小编为大家详细介绍“JavaScript数据类型检测功能如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript数据类型检测功能如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、t...
    99+
    2023-07-04
  • Python怎么使用描述符实现属性类型检查
    这篇“Python怎么使用描述符实现属性类型检查”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python怎么使用描述符实现...
    99+
    2023-06-30
  • Python使用描述符实现属性类型检查的案例解析
    目录1、如何使用描述符对实例属性做类型检查?实际案例:解决方案:2、代码演示1、如何使用描述符对实例属性做类型检查? 实际案例: 在某项目中,我们实现了一些类,并希望能像静态类型语言...
    99+
    2022-11-11
  • 使用React和ReduxToolkit实现用户登录功能
    目录一、在utils创建loadable.tsx文件二、在router文件下创建routes.tsx三、在index.tsx中配置四、App.tsx文件配置axios二次封装请求封装...
    99+
    2023-05-19
    React RTK实现登录功能 React Redux Toolkit登录
  • mybatis使用Integer类型查询可能出现的问题
    目录使用Integer类型查询出现的问题当state这个值为0的时候mybatis判断Integer遇到的bug场景产出我是这样写的使用Integer类型查询出现的问题 mapper...
    99+
    2022-11-13
  • WinForm使用DataGridView实现类似Excel表格的查找替换功能
    在桌面程序开发过程中我们常常使用DataGridView作为数据展示的表格,在表格中我们可能要对数据进行查找或者替换。 其实要实现这个查找替换的功能并不难,记录下实现过程,不一定是最...
    99+
    2022-11-12
  • react项目中使用react-dnd实现列表的拖拽排序功能
    目录1.先安装依赖2.创建一个 index.js 文件3.新建example.js文件4.新建TopicLis.js文件5.新建 ItemTypes.js现在有一个新需求就是需要对一...
    99+
    2023-02-06
    react-dnd列表的拖拽排序 react-dnd拖拽排序 react拖拽排序
  • 利用 SpringBoot 在 ES 中实现类似连表查询功能
    目录一、摘要二、项目实践2.1添加依赖2.2配置 es 客户端2.3初始化索引结构2.4向 es 中同步文档数据2.5内嵌对象查询三、小结一、摘要 在上篇文章中,我们详细的介绍了如何...
    99+
    2022-11-13
  • C#使用Clipboard类实现剪贴板功能
    剪贴板是Windows操作系统中最常用的功能之一,它用来从一个应用程序向另一个应用程序传递数据,可以是文本,图象,甚至是程序对象。 不过剪贴板也有限制,它在某个特定的时间只能指向一块...
    99+
    2022-11-13
  • jQuery基于ajax方式如何实现用户名存在性检查功能
    这篇文章给大家分享的是有关jQuery基于ajax方式如何实现用户名存在性检查功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:对于拥有会员功能的网站,尤其是会员登录后...
    99+
    2022-10-19
  • 使用opencv怎么实现一个车道线检测功能
    这篇文章给大家介绍使用opencv怎么实现一个车道线检测功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。原理:算法基本思想说明:传统的车道线检测,多数是基于霍夫直线检测,其实这个里面有个很大的误区,霍夫直线拟合容易受...
    99+
    2023-06-06
  • 使用react+redux实现计数器功能及遇到问题
    Redux,本身就是一个单纯的状态管理者,我们不追溯它的历史,从使用角度来说:它提供一个全局的对象store,store中包含state对象用以包含所有应用数据,并且store提供了...
    99+
    2022-11-12
  • 使用react和redux怎么实现一个计数器功能
    本篇文章给大家分享的是有关使用react和redux怎么实现一个计数器功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Redux,本身就是一个单纯的状态管理者,我们不追溯它的...
    99+
    2023-06-15
  • 利用golang怎么实现一个强制类型转换功能
    这篇文章给大家介绍利用golang怎么实现一个强制类型转换功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。golang的优点有哪些golang是一种编译语言,可以将代码编译为机器代码,编译后的二进制文件可以直接部署到...
    99+
    2023-06-06
  • Android使用ContentProvider实现查看系统短信功能
    本文实例为大家分享了使用ContentProvider实现查看系统短信功能的具体代码,供大家参考,具体内容如下 activity_main.xml <?xml v...
    99+
    2022-11-12
  • Oracle使用MyBatis中RowBounds实现分页查询功能
    Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便。 使用MyBatis中的RowBounds进行分页查...
    99+
    2022-10-18
  • 如何使用mybatis-plus实现分页查询功能
    今天就跟大家聊聊有关使用mybatis-plus如何实现分页查询功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 引入依赖...
    99+
    2022-11-13
  • 怎么在Html5中使用Canvas实现动画碰撞检测功能
    本篇文章为大家展示了怎么在Html5中使用Canvas实现动画碰撞检测功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。html有什么特点1、简易性:超级文本标记语言版本升级采用超集方式,从而更加灵...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作