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

React组件应该如何封装?

翻译:刘小夕 原文链接:https://dmitripavlutin.com/7-architectural-attributes-of-a-reliable-react-component/ 封装 一个封装组件提供...耦合是决定组件之间依赖程度的系统特性。根据组件的依赖程度,可区分两种耦合类型: 当应用程序组件对其他组件知之甚少或一无所知时,就会发生松耦合。...主要缺点是很难修改高度依赖于其他组件的组件。即使是一处修改,也可能导致一系列的依赖组件需要修改。 紧耦合应用(组件无封装) 封装 或 信息隐藏 是如何设计组件的基本原则,也是松耦合的关键。...React 组件可能是函数组件或类组件、定义实例方法、设置 ref、拥有 state 或使用生命周期方法。这些实现细节被封装在组件内部,其他组件不应该知道这些细节。... 组件的可重用性和可测试性显著增加。 的复用变得很容易,因为它除了需要回调,没有其它依赖。测试也变得简单,只需验证单击按钮时,回调是否执行。

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

    更可靠的 React 组件:组合及可重用性

    让我们来看看: 单一职责原则(SRP) 描述了如何根据需求划分组件,封装(encapsulation) 则描述了如何组织这些组件,而 组合(composition) 描述的是如何把整个系统粘合在一起。...有请可重用性出场 -- 让事情运转起来,而非重新发明如何让其运作。...重复问题要靠可重用的组件来解决。编写一次使用多次,是一种有效而省时的策略。 但享受可重用性也非毫无成本的。必须符合单一职责原则和合理的封装,才能说组件是可重用的。...检出 brillout/awesome-react-components 仓库,会发现一个编辑过的可重用组件菜单。 良好的库无疑会产生结构性的影响并推广最佳实践。...使用 可以将一个 URL 和一个组件联系起来。而后当用户访问匹配的 URL 时,路由将渲染相应的组件。 redux 和 react-redux 引入了单向且可预期的应用状态管理。

    2.9K10

    如何优雅的设计 React 组件

    约定目录结构 先假设我们已经拥有一个可以运行 React 项目的脚手架(ha~ 因为我不是来教你如何搭建脚手架的),然后项目的源码目录 src/ 下可能是这样的: . ├── components ├─...为了让组件“一次编写,随处使用”的原则,我们可以进一步拆分 TodoList 组件以满足其他组件的使用。 但是,如何拆分组件才是最合理的呢?...我觉得这个问题没有最好的答案,但我们可以从几个方面进行思考:可封装性、可重用性和灵活性。...,我们需要重新组织一些功能逻辑: 根据传入的 editable 属性来判断是否需要显示编辑按钮 根据组件内部的编辑状态,是显示文本输入框还是文本内容 点击“更新”按钮后,需要通知父组件更新数据列表 我们先来实现下...,使内容可修改。

    5.3K100

    如何测试驱动开发 React 组件?

    本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。...测试组件 首先使用 create-react-app 初始化一个 react 项目。目前 cra 已经内置了 @testing-library/react 作为测试框架。...npx create-react-app my-react-app 我们先从测试文件开始。先创建了组件的目录“Confirmation” 并在其中添加一个“index.test.js”文件。...render() expect(getByText(title)).toBeInTheDocument() }) 测试失败了,修改代码使它通过...例如: 如何出测试 react hooks ? 如何测试 react 路由? 如何测试接口? 希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

    2.2K10

    如何优雅的设计 React 组件

    约定目录结构 先假设我们已经拥有一个可以运行 React 项目的脚手架(ha~ 因为我不是来教你如何搭建脚手架的),然后项目的源码目录 src/ 下可能是这样的: . ├── components ├─...为了让组件“一次编写,随处使用”的原则,我们可以进一步拆分 TodoList 组件以满足其他组件的使用。 但是,如何拆分组件才是最合理的呢?...我觉得这个问题没有最好的答案,但我们可以从几个方面进行思考:可封装性、可重用性和灵活性。...,我们需要重新组织一些功能逻辑: 根据传入的 editable 属性来判断是否需要显示编辑按钮 根据组件内部的编辑状态,是显示文本输入框还是文本内容 点击“更新”按钮后,需要通知父组件更新数据列表 我们先来实现下...,使内容可修改。

    4K00

    基于jsoneditor二次封装一个可实时预览的json编辑器组件(react版)

    前言 做为一名前端开发人员,掌握vue/react/angular等框架已经是必不可少的技能了,我们都知道,vue或react等MVVM框架提倡组件化开发,这样一方面可以提高组件复用性和可扩展性,另一方面也带来了项目开发的灵活性和可维护...,方便多人开发协作.接下来文章将介绍如何使用react,开发一个自定义json编辑器组件.我们这里使用了jsoneditor这个第三方库,官方地址: jsoneditor 通过实现一个json在线编辑器...,来学习如何一步步封装自己的组件(不限于react,vue,原理类似)....版的json编辑器组件.接下来我们来按照设计思路一步步实现可实时预览的json编辑器组件. 3....使用PropTypes进行类型检测以及在组件卸载时清除实例 类型检测时react内部支持的,安装react的时候会自动帮我们安装PropTypes,具体用法可参考官网地址propTypes文档,其次我们会在

    2.6K20

    【技术篇】如何搞定react组件化

    在主流前端框架里,因为React的入门难度高而果断投入Vue怀抱的人绝不在少数。...但我要告诉大家,如果你有一定的js基础,其实React没你想象中那么困难 任何库都要在「概念简洁」(自由度高)和「使用便利」(提供现成的范式)上做选择。React 选择了前者,而Vue 选择了后者。...此外React的一大优势,便是把用户界面抽象成一个个组件,如按钮组件Button、对话框组件Dialog、日期组件Calendar。开发者通过组合这些组件,最终得到功能丰富、可交互的页面。...其实大家觉得React难,一个很重要的原因是难以找到好的教程,而自学又往往遇到各种难关: 别着急,今天我特别为你推荐这份《React组件化视频教程》 掌握组件化开发中多种实现技术: 1.掌握context... yyy() { //修改数据 } 爷孙传递:可以传两次 props 至于antd4 form表单原理、hook使用、如何使用使用自定义hook复用逻辑、context跨层级传递如何使用及其实用场景

    86820

    React可视化拖拽组件编辑代码生成

    mobile.png pc.png 特性: 任意拖拽嵌套:通过组件预览面板拖拽组件,到设计面板实现任意嵌套,设计面板中的组件也可随意拖拽嵌套 实时预览:设计面板中会实时展示组件的属性效果和样式效果,...并且与真实页面无异 DomTree展示:页面组件dom树的展示并实现dom实时追踪 可视化属性配置:结合React 特性和JS语法定制了可视化的组件属性配置,实现复杂数据结构的可视化配置 可视化样式配置...:通过样式配置面板修改样式,实时在页面中显示样式效果 模板功能:可以选中局部或者整个页面做为可复用的模板,提高页面配置效率减少重复工作 组件约束:根据组件特性配置组件约束,减少组件间的错误嵌套和报错 预览与代码生成...:可随时预览页面的真实效果,和页面的jsx代码与样式代码 多平台支持 :支持PC与移动端多型号设配切换展示 组件库替换 :通过简单的配置可以对接任何React组件库 github地址 在线预览

    3.7K30

    如何测试驱动开发 React 组件?

    本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。...测试组件 首先使用 create-react-app 初始化一个 react 项目。目前 cra 已经内置了 @testing-library/react 作为测试框架。...render(); expect(getByText(title)).toBeInTheDocument(); }); 测试失败了,修改代码使它通过...小结 当然 @testing-library/react 还有很多方便的 api。大家可以自行查阅。 未来可能会出一些文章关于测试的文章。例如: 如何出测试 react hooks ?...如何测试react 路由? 如何测试接口? 希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

    2.1K10

    如何测试 React 异步组件?

    前言 本文承接上文 如何测试驱动开发 React 组件?,这次我将继续使用 @testing-library/react 来测试我们的 React 应用,并简要简要说明如何测试异步组件。...如何测试(鼠标)事件发出的异步请求 ? ---- 对于异步组件,有两件步骤需要进行测试: 第一:测试异步方法本身有没有被调用,并且传了正确的参数。 第二:在调用之后,应用程序应该做出响应。...一起来看看代码中该如何实现? 假设你有一个用 React 编写的小型博客应用程序。有一个登录页面,还有有一个文章列表页面,内容就跟我的博客一样。...: 通过 mock 使组件可以获取静态假数据; 测试加载状态; 测试异步方法是否被正确调用,并且带上了正确的参数; 测试组件是否正确地渲染了数据 测试异步方法错误时,组件是是否渲染了正确的状态 文中关于登录成功后页面跳转并未测试...,那么如何测试 react 路由 ?

    3.3K50

    「React 手册 」如何创建函数组件?

    大家好,在前面的几篇相关文章里,我们一起学习了如何使用类的方式声明组件,以及如何属性传值和处理本地数据状态,本篇文章我们一起学习如何使用函数的方式进行声明组件。...React 16.8 版本引入了 Hooks 技术,函数组件就变得强大起来,它可以让react函数组件也拥有状态,不仅解决了React一些常见的问题,同时又让组件变得更简单、简洁、更易于阅读和重构,本篇文章将会针对...如何创建简单的函数组件 基于上篇文章的例子,我们来尝试下通过函数的方式改写下公共组件:头组件、底部组件、内容组件等。...(Content)转换成函数组件,首先我们来看看原先的内容组件: import React,{ Component } from 'react'; import Protypes from 'prop-types...import React,{ useState } from "react"; 下一步,我们来初初始化我们的数据状态,但是我们在函数组件里不能使用 this.state 方法。

    2.7K20

    如何使图像在 HTML 中可拖动?

    在本文中,我们将了解如何在 HTML5 中构建可拖动的图像。使任何 HTML5 元素(包括照片)都可拖动很简单。使用了“可拖动”功能。它接受 true、false 或 auto 等参数。...浏览器确定属性是否可拖动。如果该值设置为 true,则图像是可拖动的。如果该值设置为 false,则图片不可拖动。html 中的 draggable 属性draggable 属性指示是否可以移动元素。...在拖放操作中,通常采用可拖动特性。...可以将此属性添加到标签中,例如 标签语法属性值true − 表示可拖动的 truefalse − 表示可拖动的 false...第 6 步 - 要使图像可拖动,请使用可拖动属性并将其设置为true。第 7 步 - 利用媒体查询来更改图像宽度,就像移动尺寸一样。例<!

    75910
    领券