关于react项目当中propTypes应该在生产环境中去掉的做法

react 之 prop-types react 之 prop-types 在开发过程当中,经常会用到Prop的type校验,但是React.PropTypes和React.createClass这两个功能在React 15.5之后版本被废弃了,所以从15.5版本开始,须要引入prop-types包来使用props校验。 使用步骤 安装prop-types第三方包 yarn add prop-types //yarn npm install prop-types //npm 导入 import PropTypes form 'pr 阅读详情

    我们都知道,在react项目当中state和prop是常用的属性,state是组件内部的状态,而prop是外部传递给组件的数据。对于对props的属性校验,一般会引入propTypes。

    首先我先大致说一下propTypes检查。在react中既然props是组件的对外接口,那么就应该以某种方式让组件声明自己的接口规范。react通过propTypes来支持这个功能,来约束这个组件支持哪些prop,每个prop应该是什么样的格式。

    在es6方法定义的组件类中,可以通过增加类的propTypes属性来定义prop规格,这不只是声明,而且是一种限制,在运行时和静态代码检查时,都可以根据propTypes判断外部世界是否正确的使用来了组件属性。

    

  比如:

          Counter.propTypes = {

                      caption: PropTypes.string.isRequired,

                      initValue: PropsTypes.number

          };

    其中要求caption必须是string类型,initValue必须是number类型。isRequired表示Counter组件必须指定caption,如果没有isRequired表示如果没有也没有关系。

      可以验证一下,这里就不做了。

 

    那么问题就来了,如果组件根本就没有定义propTypes会怎么样呢?并不会怎样,组件依然能正常工作,而且,即使定义了propTypes,在propTypes检查出错的情况下,组件依然能工作,也就是说,这只是个辅助开发的功能,并不会改变组件的行为。

    在开发环境中,这一操作会帮助我们避免犯错,避免一些不必要的麻烦,但是当咱们开发完成之后,这一操作就显得没有必要了,在生产环境中,咱们其实并不需要这一步操作了,那么,咱们就应该在生产环境中将它去掉。

下面咱们介绍如何用一种自动方式将propTypes在生产环境中去掉。

    关于这个问题,create-react-app有个issue也讨论过,可供参考:https://github.com/facebookin...

现在babel-plugin-transform-react-remove-prop-types就具有这种功能,通过npm安装,并且应该确保只在发布代码时使用它。

    in:

        const Baz = (props) => (

                 <div {...props} />

       );

        Baz.propTypes = {

                  className: PropTypes.string

         };

 

    out:

         const Baz = (props) => (

                <div {...props} />

       );

 

    可以选择CLI和Node API还有.babelrc配置,作者推荐使用.babelrc。(什么是.babelrc:这个文件是用来设置转码的规则和插件的,熟悉linux的同学一定知道,rc结尾的文件通常代表运行时自动加载的文件,配置等等,类似bashrc,zshrc。而且在babel6中,这个文件必不可少)

 

    那么,在项目根目录中找到.babelrc文件,打开

    如果不需要配置项的话这么写:

{

  "env": {

    "production": {

      "plugins": ["transform-react-remove-prop-types"]

    }

  }

}

 

    如果需要加一些配置项的话就这么写:

{

  "env": {

    "production": {

      "plugins": [

        ["transform-react-remove-prop-types", {

          "mode": "wrap",

          "ignoreFilenames": ["node_modules"]

        }]

      ]

    }

  }

}

    有这么几个配置

1.      mode:remove (default)/wrap/unsafe-wrap

2.     removeIemport:true/false(default)

3.     ignoreFilenames :[ ' node_modules ' ]   该过滤器生成正则表达式。任何包含数组字符串的文件名都将被忽略。默认情况下,匹配所有。

4.     additionalLibraries :[ ' react-immutable-proptypes ' ]默认情况下只会删除引入的propTypes,比如在从' prop-types '导入PropTypes和从' react-immutable-proptypes '中导入ImmutablePropTypes时,要同时删除后者,那么就添加这项配置。

5.     classNameMatchers :[ “ BaseComponent ” ] 使用此选项可以使此插件在扩展不同于React.Component的类的组件上运行,比如

class MyComponent extends BaseComponent    { 

  ...

}

 

好了,大家可以去试验下了。

 

更多文章jacktesla的博客

React PropTypes废止与prop-types包演进解析 PropTypes是React中用于运行时props类型校验的基础机制,其原理是通过纯函数校验器在组件创建阶段验证传入属性的类型与结构。这一机制虽不参与渲染逻辑,却对开发期健壮性、错误可追溯性和团队协作规范具有关键价值。随着React架构演进,官方将其从核心包剥离为独立的prop-types包,体现了模块解耦、开发/运行时分离及渐进式升级的工程哲学。该变更直接影响组件开发工作流、CI集成策略及TypeScript协同方案,也成为react面试题中高频考察的底层设计意识点。 阅读详情

相关推荐

babel-plugin-transform-react-remove-prop-types:从生产版本中删除不必要的React propTypes

babel插件转换React删除道具类型 从生产版本中删除不必要的React propTypes。 安装 npm install --save-dev babel-plugin-transform-react-remove-prop-types 问题解决了 从生产版本中删除React propTypes ,因为它们仅在开发中使用。 您可以通过删除带宽来节省带宽。 例 在 const Baz = ( props ) => ( < div> ); Baz . propTypes = { className : PropTypes . string }; 出 const Baz = ( props ) => ( < div> ); 带有注释注释 默认情况下,此插件应解决大多数情况。 在某些情况下,例如,当使用HOC(高阶组件)时,例如react-redux的connect或组件继承(),可以在propTypes定义之后使用注释强制删除: Component . propTypes /* remove-propt

移除react项目中prop-types代码

在React项目中,我们为了保证项目的健壮性所以引入了prop-types。但在生产环境,我们并不需要prop-types生成的代码。 prop-types已经自动做了些什么? 在项目中我们通常按下方示例来使用prop-types': import PropTypes from 'prop-types' TestClass.propTypes = { propName: PropTypes.string } 在开发环境中,这些代码会帮我们校验prop的类型,这无疑是很有用的。 在产品环境中我们并不需.

永恒的避风港 608

PADS VX2.4 缝合孔(阵列过孔)的添加方法

缝合孔的主要目的是:①:增加底层和顶层的地铜皮的连接性,②:起到屏蔽外界信号干扰的作用。铺完铜后,右击空区域选择“选择形状”命令,选取整板中的一块大铜皮,右击选择“覆铜区域内过孔阵列模式”→“沿周边”指令后,再右击选择“覆铜区域内过孔阵列”,便能看到已选区域内添加的缝合孔(过孔阵列),也可以通过铜皮显示或隐藏的无模命令:PO进行查看。完成上面的“防止错误”和“过孔样式”的设置后,开始对整板进行铺铜处理,点击“工具栏”→覆铜平面指示器,在弹出的对话框点击“开始”,便能观察铺铜后的板子。

tianpu2320959696的博客 3057

react——子组件props字段类型类型限制——默认值设置。

react——子组件props字段类型类型限制——默认值设置。

阿牛哥的博客 1938

Unity手游优化实战:用GPU Instancing把草地渲染的DrawCall从8000降到20(附完整Shader)

本文详细介绍了Unity手游中利用GPU Instancing技术优化草地渲染的实战方法,将DrawCall从8000降至20。通过Shader改造和性能优化技巧,开发者可以在移动端实现高效渲染,显著提升游戏性能。文章包含完整的Shader代码和优化策略,适合Unity开发者学习应用。

weixin_33691817的博客 489

Ubuntu22.04下ROS2与PX4仿真环境搭建全流程解析

本文详细解析了在Ubuntu22.04系统下搭建ROS2与PX4仿真环境的全流程,包括系统准备、ROS2 Humble安装、PX4飞控环境部署、ROS2与PX4通信桥梁搭建等关键步骤。针对常见问题提供了解决方案,并分享了性能优化和开发调试技巧,帮助开发者快速构建无人机仿真开发环境。

weixin_29248653的博客 607

react proptypes

组件约束

qq_45623378的博客 895

SLG大地图实战:从Tilemap到Shader的地表渲染与数据分层架构

本文深入探讨了SLG大地图开发中的关键技术挑战与解决方案,包括Tilemap系统的深度改造、地表渲染的Shader优化以及数据分层架构设计。通过实战案例,展示了如何实现视觉表现丰富、性能开销可控的SLG大地图,特别适合Unity开发者和游戏技术美术参考。

weixin_28693309的博客 521

PropTypes 在 React 中的使用心得

在 React 开发中,PropTypes 是一个非常有用的库,用于对组件的属性进行类型检查。它可以帮助我们在开发过程中捕获潜在的错误,提高代码的可靠性和可维护性。本文将介绍 PropTypes 的基本用法和一些使用心得。

天问博客-专注于大前端技术 2919

IEEE Journal of Biomedical and Health Informatics(JBHI)投稿经验分享

《IEEE Journal of Biomedical and Health Informatics投稿经验分享》详细记录了在影响因子6.7的中科院一区期刊JBHI的投稿历程(2025.1-5月,历时4个月)。文章重点分析:1)审稿特色:4位审稿人差异显著,领域专家意见专业但要求严苛;2)修改要点:需重视大修(补充实验/原理阐述),并注意将回复内容同步至正文;3)期刊特点:送审率高但审稿严格,常规投稿周期约4-5个月;4)实用建议:建议首次大修全力以赴,善用AI工具辅助写作,避免拖延。

LiRongLu_的博客 5089

论文阅读:Universal and Transferable Adversarial Attacks on Aligned Language Models. LLM Attacks

因为“即开即用”的大型语言模型能够生成大量令人反感的内容,近期的工作集中在对这些模型进行对齐,以防止不受欢迎的生成。尽管在规避这些措施方面取得了一些成功——即所谓的针对大型语言模型(LLMs)的“越狱”——这些攻击需要大量的人类智慧,并且在实践中很脆弱。自动对抗性提示生成的尝试也取得了有限的成功。在本文中,我们提出了一种简单有效的攻击方法,可以导致对齐的语言模型生成令人反感的行为。

CSPhD-winston的博客 1418

React 的 PropTypes

在 React 中,prop 是从外部传递给组件的数据,可以说是组件对外的一个接口属性,它也是应该有对应的规范的,比方说: 这个组件支持哪些 prop 每个 prop 应该是怎么样的格式 而 React 是通过 propTypes 用来规范 prop 必须满足某种规格,如下所示: export default class MyComponent extends Component { //...

FritzXu的博客 1386

一文吃透 SAP HANA Service Broker:原理、架构与落地实践

摘要:SAP HANA Service Broker 作为云原生开发的关键组件,通过标准化流程管理 HDI 容器与服务实例的生命周期,实现数据库资源的自动化配置与安全隔离。它采用服务目录、服务计划和绑定机制,将连接凭据注入应用环境变量,避免硬编码风险。在实际应用中,需根据模块生命周期决定共享或隔离容器,并通过跨容器访问模式实现安全数据共享。典型案例展示了电商平台的多模块协同与SaaS租户隔离场景,验证了其在提升运维效率与安全合规方面的价值。最佳实践强调以生命周期划边界、最小权限原则和HTTPS安全传输,为企

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 225

react 项目,在生产环境去掉 propTypes 检查代码,打包时自动去除

关于PropTypes PropTypes包含一整套验证器,可用于确保你接收的数据是有效的。 能帮助我们在开发的时候及时发现问题。 没有propTypes定义,组件依然能够正常工作,而且,即使在propTypes检查出错的情况下,组件依然能工作。 propTypes只是一个辅助开发的功能,并不会改变组件的行为。 为了验证propTypes的作用,故意违反propTypes规则即可。在项目rea...

Where there is a will there is a way 1454

Zemax与Matlab交互:双胶合优化详细流程

Zemax与Matlab交互:双胶合优化详细流程

weixin_72050316的博客 630

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

React项目中使用propTypes进行数据验证

React项目中使用propTypes进行数据验证

一只小绵羊 1015

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

PropTypes 和 TypeScript 在 React 中的比较

PropTypes 是一个内置的库,允许开发者为 React 组件的 props 定义类型和验证规则。它可以帮助识别错误的 props 类型,在开发过程中提供警告信息。TypeScript 是 JavaScript 的一个超集,提供静态类型检查。它在编译时检查类型错误,增强代码的可读性和可维护性。PropTypes 和 TypeScript 各有优缺点。选择哪种工具取决于项目的规模、团队的经验和代码的复杂性。

肥晨开发的学习之路 1413

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

React把PropTypes放到一个独立包

PropTypes的代码从React中分离出来了,放在一个独立的npm包prop-types里。 以前,要做PropTypes检查,代码是这样(方法一)。 import React from 'react'; SomeComponent.propTypes = { foo: React.PropTypes.string }; 或者下面这样(方法二)。 import React, ...

weixin_40660221的博客 463

React PropTypes 的使用

React PropTypes 的使用 参考:https://react.docschina.org/docs/typechecking-with-proptypes.html 在所使用 PropTypes 的页面中引入 ‘prop-types’;如果你是用脚手架创建的项目就不用下载这个包,直接引用就行 import PropTypes from 'prop-types'; 1. PropTypes 提供一系列验证器,可用于确保组件接收到的数据类型是有效的 2. 通过类型检查捕获大量错误 3. PropT

mslmhl的博客 2337

Reactjs 的 PropTypes 使用方法

propTypes 使用來規範元件Props的型別與必需狀態 var Test = React.createClass({ propTypes: { // required requiredFunc: React.PropTypes.func.isRequired, ...

198

从TypeScript到PropTypes:简化React组件类型转换的利器

从TypeScript到PropTypes:简化React组件类型转换的利器 项目介绍 在现代前端开发中,TypeScript和React已经成为许多开发者的首选组合。然而,TypeScript的类型系统与React的PropTypes之间存在一定的转换成本,尤其是在大型项目中,手动维护这两者的同步可能会变得繁琐且容易出错。为了解决这一问题,babel-plugin-typescript-to-p...

gitblog_00170的博客 1033

如何使用react-immutable-proptypes优化React应用的高效验证

`react-immutable-proptypes`是一个专为React应用设计的高效验证库,它能够与Immutable.js无缝集成,提供强大的PropType验证功能。对于使用Immutable.js管理状态的React项目,这个库可以帮助开发者更轻松地验证组件属性,确保数据类型的正确性,提升应用的稳定性和可维护性。 ## 为什么需要react-immutable-proptypes?

gitblog_00033的博客 488

react 使用 PropTypes 进行类型检查

本文详细介绍React中PropTypes的使用方法,涵盖安装prop-types插件、各类类型验证规则(如原生类型、数组/对象嵌套检测、自定义验证等)、isRequired与defaultProps设置,以及ES6/ES7语法下的组件应用。通过典型案例演示,帮助开发者实现组件props的类型检查,提升代码健壮性,适用于开发阶段的错误预警。

青蛙king的博客 2328

react项目导入PropTypes报错: Typo in static class property declaration react/no-typos

在学习react的时候,测试props验证的时候,一直卡在的propTypes使用出错 import React from 'react'; import ReactDOM from 'react-dom'; import PropTypes from 'prop-types'; ... // props验证 var title = "菜鸟驿站"; class MyTitle extends React.Component{ render(){ return( <h1>Hel

zckyyy0926的博客 4518

react中组件prop属性的类型指定(propTypes)

指定propTypes的主要目的是确保组件接收的props类型符合预期,进而减少运行时的错误,增强代码的可维护性和可读性,尤其是在大型应用或团队开发中。在开发阶段,propTypes是一个有效的工具,帮助开发者捕捉潜在的错误,并明确文档化组件的预期props。虽然propTypes是 React 的一个有用功能,但它有一些限制,例如只在开发环境中工作、运行时类型检查等。对于更严谨的类型检查,可以考虑使用 TypeScript,提供静态类型检查。总之,propTypes。

2401_89221867的博客 1385

Airbnb的PropTypes-exact项目指南

Airbnb的PropTypes-exact项目指南 此教程旨在详细指导您如何理解和使用airbnb/prop-types-exact这个开源库,它提供了一种精确的PropType检查方式来防止在React应用中添加额外不必要的属性。 1. 项目目录结构及介绍 项目的主要目录结构简洁明了,专注于其单一目的——提供一个精确匹配PropTypes的工具。以下是关键部分的概述: src: 这个目录包...

gitblog_01138的博客 906
上一篇: 初学者可以用的js小技巧
下一篇: react-router的3种按需加载介绍
jackTesla
博客等级 码龄9年 5粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值