首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用TypeScript编写React的最佳实践

你可以运行以下面的命令: npx create-react-app my-app --template typescript 这可以让你开始使用 TypeScript 编写 React 。...组件 React 的核心概念之一是组件。在这里,我们将引用 React v16.8 以后的标准组件,这意味着使用 Hook 而不是类的组件。 通常,一个基本的组件有很多需要关注的地方。...通常,在 React 和 TypeScript 项目中编写 Props 时,请记住以下几点: 始终使用 TSDoc 标记为你的 Props 添加描述性注释 /** comment */。...常见用例 本节将介绍人们在将 TypeScript 与 React 结合使用时一些常见的坑。我们希望通过分享这些知识,您可以避免踩坑,甚至可以与他人分享这些知识。...在本文中,我们介绍了配置,组件,Props,Hook,常见用例和第三方库。尽管我们可以更深入地研究各个领域,但这应涵盖帮助您遵循最佳实践所需的 80% 。

4.7K51

我们编写 React 组件的最佳实践

刚接触 的时候,在一个又一个的教程上面看到很多种编写组件的方法,尽管那时候 框架已经相当成熟,但是并没有一个固定的规则去规范我们去写代码。...开始之前,先列几条: 我们使用ES6/ES7 如果你无法区分页面组件和容器组件,推荐阅读 这篇文章 如果有更好的意见或建议,请在评论区告诉我,谢谢 基于 Class 的组件 基于 Class 的组件是有状态的...现在来一行一行的编写我们的组件: 导入 CSS 我喜欢 ,但是这个概念还比较新,现在也并没有成熟的解决方案,所以我们在每个组件里面去引用 CSS 初始化 State 当然你也可以选择在构造函数里面去初始化...props 就是在获取函数的参数值,我们可以直接用 的解构: 我们也可以使用默认参数值去设置 ,就像上面的 避免使用下面的 ES6 语法: 看起来很先(逼)进(格),但这个函数是匿名的。...文章来源:https://blog.catwen.cn/2018/01/18/best-practices-for-writing-react-components/ 广告内容 关注我们

71770
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TypeScript 2.8下的终极React组件模式

    React Component Patterns启发而写 在线Demo 有状态组件、无状态组件、默认属性、Render回调、组件注入、泛型组件、高阶组件、受控组件 如果你了解我,你就已经知道我不编写没有类型定义的...这篇文章篇幅会比较长,所以请你坐下放轻松,与此同时你将掌握Typescript下的 终极React组件模式。...无状态组件 你猜到了,这些是没有state的组件(也被称为展示型组件)。在部分时候,它们也是纯函数组件。让我们用TypeScript创建人造的无状态Button组件。...但随着 TypeScript 2.8中新加入的功能,我们几乎可以在所有的 React 组件模式中编写类型安全的组件。...在这遍非常长(对此十分抱歉)文章中,感谢TypeScript,我们已经学会了在各种各样的模式下怎么编写严格类型安全检查的组件。

    6.7K40

    如何编写难以维护的React代码?耦合组件

    如何编写难以维护的React代码?耦合组件 在许多项目中,我们经常会遇到一些难以维护的React代码。其中一种常见的情况是:子组件直接操作父组件方法,从而导致父子组件深度耦合。...这样的实现让子组件过于依赖父组件的具体实现细节,使得代码难以维护和扩展。...通过这种方式,我们实现了父子组件之间的解耦,使代码更易于维护和扩展。子组件不再依赖于父组件的具体实现细节,而是通过发布事件来与父组件进行通信。...这样的代码结构使得我们可以更加灵活地对子组件和父组件进行修改和优化,而不会影响到彼此的功能。...这对于大型项目和团队协作非常有益,因为不同的团队成员可以独立开发和测试不同的组件,而不用担心彼此的实现会产生冲突。 在编写React代码时,我们应该始终考虑代码的可维护性和扩展性。

    12620

    dumi,新时代的 React 组件开发和文档编写神器!

    dumi(嘟米)是基于 Umi 打造、为组件开发场景而生的文档工具,用大实话讲,dumi 就是可以用来写文档、官网和组件库 Demo 的 Umi。...、用 mdx 编写的组件库 Demo『只能看不能用』、想打造一个带 Demo 的组件库官网成本极高等现实问题,dumi 正是为了解决它们而来!...让组件库研发即刻开始 通常我们准备开发一个组件的,首先要面临的并非打包的问题,而是如何对这样一个组件进行调试: 为了把这样一段代码跑起来,我们需要准备 webpack、babel、TypeScript…...用 mdx 写过 Demo 的朋友应该都能回忆起嵌入 State 组件姿势十分别扭、以及时常被超过 100 行的 Demo 支配的恐惧;在打造 dumi 时,我们曾问自己:用户会在 Markdown 中写代码吗...最后一个问题,组件开发、编写 Demo 和文档搭建都解决了,打包咋整?打包仍然推荐使用 father-build,与 dumi 一起,为我们组成全流程的组件库开发工具链。

    2K10

    使用 React 和 TypeScript something 编写干净代码的10个必知模式

    编写干净代码需要编写具有清晰和简单的设计模式的代码,这使得人们可以轻松地阅读、测试和维护代码。因此,干净的代码可以降低软件开发的成本。这是因为编写干净的代码所涉及的原则,消除了技术债务。...给 children 提供明确的 props Typescript 反映了 React 如何处理 children props,方法是在 react.d.ts 中为函数组件和类组件将其注释为可选的。...但是,最好总是用类型明确地注释children的 props。...当使用 Typescript 和 React 时,函数组件可以通过两种方式编写: 像一个正常函数一样,如下面的代码: type Props = { message: string }; const Greeting...我们可以编写更简洁、更易于维护的 React class 组件,使用类字段,如下所示: // Don't do type State = {count: number} type Props = {}

    1.1K40

    React 弹窗组件用的 createPortal 是怎么实现的?

    想必大家都用过弹窗组件,比如 antd 的 Modal 组件: 打开 devtools 可以看到,它是直接挂在 body 下的: 实现这种效果是用的 createPortal: 渲染结果如下: 弹窗组件都是基于这个...首先,我们过一遍 React 的渲染流程: 我们组件里写的这些是 jsx 代码: 它们编译后会变成类似 React.createElement 这种代码,叫做 render function。...render function 执行的结果是 React Element。 类似这样: React 组件 render 的结果就是产生 React Element。...接下来我们一起调试下 React 源码: npx create-react-app --template typescript portal-test 先用 cra 创建个 react 项目。...之前是用 React Element 的 $$typeof 属性区分,而之后就是用 fiber 的 tag 属性区分了: 就像前面所说,从 vdom(React Elment) 转 fiber 的过程,

    52730

    【组件库封装】:封装一个 Library 什么流程?

    随着业务研发过程的推进,会逐渐出现在业务角度上有复用价值的自定义组件,如果我们把这些可复用的组件封装为一个一个独立的 Library,并发布到 npm 上,在项目组内共享,可以避免重复造轮子、便于协同开发...,个人偏向前者,把相关项目集中在一起存储) 开源协议(本文中采用 MIT,愿意咋搞就咋搞) 开发语言(建议用 typescript) 创建项目 项目开发(本文采用 react) 代码格式标准化(preitter...开源项目 ReactRouter++ 将拆分为 @webj2eedev/react-router-plus-plus 和 @webj2eedev/history-plus-plus 两个子项目。...开发语言 不需要多说,TypeScript 可以极大地增加前端代码的可维护性。必然是要选 TypeScript 作为基础开发语言。...基于 Typescript、React、React Hooks 技术,完成 @webj2eedev/history-plus-plus、@webj2eedev/react-router-plus-plus

    1.1K30

    《Vue3.0抢先学》系列之:网友们都惊呆了!

    终于见到了传说中基于TypeScript编写的新版Vue的代码了,热爱学习的我顿时一股学习热情喷涌而出呀,第一时间抄起命令行,Clone下了源代码: git clone https://github.com...不可否认,如果说从框架的实现层面来说,Vue3.0确实是一个全新的框架,框架的代码实现全部采用了TypeScript来编写,并且引入了一种和之前完全不同写法的API:组合式API(Composition...不过,值得注意的是,绝大多数版本的IE浏览器是不支持Proxy的,如果需要进行兼容,我们可能需要引入相关polyfill。 3. 一定要用TypeScript来编写代码? 不是。...可以写出像React风格的组件代码吗? 可以。通过采用jsx或tsx,结合使用render()函数和Composition API,我们完全可以写出很漂亮的函数式风格Vue代码。...不过,说了这么多,是不是你已经迫不及待的想知道到底怎么来快速用起这个源代码呢? 好的,请看下集!

    83720

    如何编写难以维护的 React 代码?耦合通用组件与业务逻辑

    在众多项目中,React代码的维护经常变得棘手。其中一个常见问题是:将业务逻辑直接嵌入通用组件中,导致通用组件与业务逻辑紧密耦合,使其失去“通用性”。...这种做法使通用组件过于依赖具体业务逻辑,导致代码难以维护和扩展。 示例:屎山是如何逐步堆积的 让我们看一个例子:我们在业务组件 PageA 和 PageB 中都使用了通用组件 Card。...该原则的核心思想是将大型系统或程序分解为多个互相独立的组件,每个组件负责解决特定的关注点或任务,而不会受到其他关注点的干扰。这有助于提高代码的可维护性、可扩展性和可重用性。...这有助于减少代码的风险,因为修改现有代码可能导致不可预测的副作用。...重构 将上述原则应用于这个示例中:通用组件应该只了解与自身相关的信息,Card 组件只关心何时显示 Footer,而不关心它在何处使用以及是否为第偶数个。

    22940

    通过三个实例掌握如何使用 TypeScript 泛型创建可重用的 React 组件

    市面上已经有很多关于 TypeScript 泛型的文章和教程,所以本文将聚焦于如何在 React 组件中使用泛型,让你的组件变得更加灵活和可重用。...一、利用 TypeScript 泛型创建简单的可重用 React 组件 创建一个简单的泛型 React 组件 首先,我们来创建一个泛型 React 组件,它可以接受任何类型的数据并通过一个渲染函数将数据展示出来...渲染函数将字符串转换为大写,并且 TypeScript 确保了在 render 属性中进行的操作是对字符串类型数据有效的。 使用自定义类型的数据 现在我们用一个自定义类型的数据来使用泛型组件。...这展示了泛型在 React 组件中的强大作用,我们可以用同一个组件处理不同类型的数据获取和展示。 三、使用泛型创建通用的 React 表单组件 在实际开发中,表单是我们常用的组件之一。...这样,表格组件就会渲染包含两行数据的表格,每行数据对应一个人的姓名和年龄。 结束 TypeScript 的泛型是一项强大的功能,能够使你的 React 组件更加灵活和可重用。

    26110

    使用mono-repo实现跨项目组件共享

    但是这样用户体验不好,客户本来不需要登陆的,你给他看一个登录页可能会造成困惑,可能需要频繁求教工作人员才知道怎么用,会降低整体的工作效率,所以产品经理并不接受这个,要求客户一进来就需要看到客户的售卖页面...我们也是这么想的,但是公共组件库有多种组织方式,我们主要考虑了这么几种: 单独NPM包 再创建一个项目,这个项目专门放这些可复用的组件,类似于我们平时用的antd之类的,创建好后发布到公司的私有NPM仓库上...node_modules可以手动删,也可以用这个命令: lerna clean yarn workspace lerna bootstrap --hoist虽然可以将子项目的依赖提升到顶层,但是他的方式比较粗暴...--hoist来进行提升,lerna会提升用的最多的版本,也就是3.1.0到顶层,然后把子项目的node_modules里面的antd都删了。...这时候就需要介绍yarn workspace 了,他可以解决前面说的版本不一致的问题,lerna bootstrap --hoist会把所有子项目用的最多的版本移动到顶层,而yarn workspace

    3.1K41

    19年你应该关注这50款前端热门工具(上)

    03 sucrase https://sucrase.io/ 如果你用typscript构建React项目,sucrase将是一个不错的选择,它的编译速度将是Babel的20倍。...sucrase——一款ES6+编译器,重点关注非标准语言,例如Typescript,JSX和Flow。...,它的诞生初衷是为了支持 Vue 及其子项目的文档需求。...无需再手动编写任何网络或后端代码。功能特性: 状态管理:自动跨浏览器、服务器和存储器无缝管理游戏状态; 快速成型:在渲染游戏之前调试界面以模拟更改。...多人游戏:所有连接到同一游戏的浏览器都实时同步,无需刷新。 私密状态:私密信息可从客户端隐藏。 日志:游戏日志可查看任意时间的信息。 UI 工具包:常用于游戏中的 React 组件。

    1.5K30
    领券