内容大纲

  • 划分组件边界的原则
  • React组件数据种类
  • React组件的生命周期

React应用将围绕着组件的设计展开,所以关于组件的设计至关重要。

设计易于维护的组件原则

任何一个复杂的应用,都是由一个简单的应用发展而来。

软件设计的通则:高内聚,低耦合。

在前端开发中,HTML负责页面显示,交互放在JS,样式放在CSS文件,从功能角度来说,模块划分明确,但是不满足高内聚的原则。

React则是天生高内聚,展示内容的JSX,定义行为的JS和样式CSS都可以放在一个JS文件中,目的都是为了实现一个功能模块。

至于低耦合,说的是不同组件之间的依赖关系需要弱化,保持系统的低耦合,这个需要程序员自己来把握,使用React提供的完善的对外接口,我们可以很容易设计出低耦合的系统。

React组件数据

主要分成两种:

  • prop:property,从外部传递给组件的数据
  • state

二者之一发生了改变,都会触发组件的重新渲染。所以,在有两种数据的情况下,如何选择呢?

答案是:对外用prop,对内用state

组件需要定义自己能够接受的prop数据,组件之外的一切都是它的外部世界,外部世界需要通过prop与组件对话。


参考:

《深入浅出React和Redux》

【React】设计高质量的React组件相关推荐

  1. 【华为云技术分享】如何设计高质量软件-领域驱动设计DDD(Domain-Driven Design)学习心得

    DDD做为软件设计方法于2004年提出,一直不温不火,最近几年突然火起来了,为啥呢?正所谓机会给有准备的人,因为微服务的流行,大家都跃跃欲试把传统单体软件转成微服务架构,但理论很丰满,现实很骨感,光是 ...

  2. 使用Formik轻松开发更高质量的React表单(一)入门

    前言 发现Formik是在我学习redux-form过程中从国外一篇博客上偶然发现的,看到作者的高度肯定后我立即转到github上,正如许多朋友所关注的,Formik的星数达8282,这个数字在git ...

  3. 使用Formik轻松开发更高质量的React表单(二)使用指南

    一个基本的例子 设想你要开发一个可以编辑用户数据的表单.不过,你的用户API端使用了具有类似下面的嵌套对象表达: {id: string,email: string,social: {facebook ...

  4. 设计高质量的论文插图

    研发总结笔记(个人理解):论文写作是 一种研究笔记,我前段时间学会最多是总结汇报.人对事物的直观感受是图像比文字强. 因此论文的插图是论文被录一个指标,一般工学研究中的论文图为:模型图.数据图.结果图 ...

  5. react 动态添加组件属性_这么高质量React面试题(含答案),看到就是赚到了!...

    前言 本文篇幅较长,全是干货,建议亲们可以先收藏慢慢看哦 写文不易,欢迎大家一起交流,喜欢文章记得关注我点个赞哟,感谢支持! Q1 :什么是虚拟DOM? 难度::star: 虚拟DOM(VDOM)它是 ...

  6. react学习—高阶组件HOC

    高阶组件HOC 一.高阶组件HOC 1.高阶组件 2.属性传递 3.使用属性传递 4.注意 一.高阶组件HOC HOF:Higher-Order Function, 高阶函数,以函数作为参数,并返回一 ...

  7. React之高阶组件

    React之高阶组件 React之高阶组件 前言 基本用法 属性代理模式(Props Proxy) 通过ref访问组件实例 反向继承(Inheritance Inversion) 总结 React之高 ...

  8. React 之 高阶组件的理解

    1.基本概念 高阶组件是参数为组件,返回值为新组件的函数. 2.举例说明 ① 装饰工厂模式 组件是 react 中的基本单元,组件中通常有一些逻辑(非渲染)需要复用处理.这里我们可以用高阶组件对组件内 ...

  9. [react] 写一个react的高阶组件并说明你对高阶组件的理解

    [react] 写一个react的高阶组件并说明你对高阶组件的理解 定义高阶组件 import React, { Component } from 'react';const simpleHoc = ...

最新文章

  1. 面试集——redis
  2. 生鲜电商回光返照? 不! 是起死回生!
  3. 新一代垃圾回收器ZGC的探索与实践
  4. python中scrapy的middleware是干嘛的_python爬虫常用之Scrapy 中间件
  5. Halcon图像增强方法与原理概述
  6. 从硬盘上把数据传回到计算机称为什么,计算机基础知识 第一章 习题三
  7. linux常用高级命令,Linux常用高级文件操作命令
  8. 计算机基础及ms应用在线,全国一级计算机基础及MS Office应用课件 (2).pdf
  9. 摇杆控制方向原理_为工业安全守好”门”!各种方向的控制阀原理图大集合
  10. python中如何编写代码输入多个数据并把它们放在一个列表中去_10分钟学习函数式Python...
  11. linux显示磁盘使用情况命令,Linux中监控磁盘分区和使用情况的几个工具
  12. Week12(11月28日)
  13. ORB特征提取算法解析
  14. 协创物联网合肥产业园项目远程预付费电能管理系统的设计与应用
  15. Python爬虫利器 ——代码转换
  16. 笔记本取消fn +功能键
  17. python2048游戏代码_python 实现 2048 游戏 (二)
  18. php发布iis0x80070005,iis 0x80070005 解决方法
  19. 无限火力跳跳机器人_2021LOL无限火力机器人最强出装和天赋介绍
  20. 你是这样的 CSS,19个唯美的边框

热门文章

  1. 几何畸变图像恢复 openCV3 - 数字图像处理作业3
  2. 大学四年规划英语计算机专业课,大学四年考证规划你get了吗?
  3. java中加载窗口的函数_Java函数调用 - playgame的个人页面 - OSCHINA - 中文开源技术交流社区...
  4. android无网络状态栏,Android中检查网络连接状态的变化,无网络时跳转到设置界面...
  5. 阿里云java面试_20个高级Java面试题汇总
  6. springboot主线程_springboot中的多线程.md
  7. android 自定义 滑动删除,Android_Android ListView实现仿iPhone实现左滑删除按钮的简单实例,需要自定义ListView。这里就交Fl - phpStudy...
  8. 框架下cookie的使用_aspnetcore自带cookie的认证期限分析
  9. Python数据结构与算法(1.4)——Python基础之控制结构
  10. 最大堆和最小堆和平衡二叉树_最小堆二叉树