Dumb组件:在react中,只会接收props,根据props进行渲染的组件称为Dumb组件。

Dumb组件不依赖除了React.js和Dumb组件以外的内容,Dumb组件是最纯粹的,可复用性最好的组件。

Smart组件:单靠Dumb组件无法构建应该程序,因为它们除props外,不依赖其他外部的内容,因而无法获取数据。这就需要另一种组件,它们非常“聪明”,专门从事数据相关的应用逻辑,如与Ajax交互等,这种组件称为Smart组件。

Dumb组件与Smart组件的关系:Smart组件负责数据相关的应用逻辑,将获取到的数据通过props传递给Dumb组件,Dumb负责UI的呈现。

Smart组件一般作为Dumb组件的父组件,如下图:

举一个简单的例子:TableShow是一个显示表数据的Dumb组件,TableShowContainer是一个Smart组件,负责与后台进行数据交互,将接收到的数据传递给TableShow,再由TableShow渲染到页面。

你也许会问,那我直接由Smart组件获取到数据后直接渲染到页面不就行了,为什么还要再传递给一个Dumb组件。

确实Smart组件可以包含Dumb组件,将数据直接渲染到页面。但是Dumb组件的目的是为了高度复用。

假设一种场景,SmartA与SmartB是两个实现不同业务功能的组件,它们都可以对Table数据进行更新。如果直接在Smart组件中进行渲染,那么同一段渲染Table的代码,需要在两个Smart组件中分别写一遍。如果我们将渲染Table这一操作抽离成一个Dumb组件,那么只需要在SmartA获取到后台更新数据时,将数据通过props传给Dumb组件,即可实现Tabke数据的更新,SmartB同理。

不止是大的项目需要严格且有逻辑的组件层划分,在平时的学习以及练习中,应养成一种好的逻辑思维,让它变成一种习惯,才不会手忙脚乱。

欢迎关注公众号“洁儿的漫漫求学路”,互相学习,共同进步~

React(四):Smart组件与Dumb组件相关推荐

  1. Lesson 43 Smart 组件 vs Dumb 组件

    Lesson 43 Smart 组件 vs Dumb 组件 大家已经知道,只会接受 props 并且渲染确定结果的组件我们把它叫做 Dumb 组件,这种组件只关心一件事情 -- 根据 props 进行 ...

  2. react 子传参父_React 子组件给父组件传值、整个组件、方法

    一.准备工作 1.定义一个父组件,名字为Parent /src/component/Parent.js import React, {Component} from 'react' export de ...

  3. web前端高级React - React从入门到进阶之组件的状态提升

    系列文章目录 第一章:React从入门到进阶之初识React 第一章:React从入门到进阶之JSX简介 第三章:React从入门到进阶之元素渲染 第四章:React从入门到进阶之JSX虚拟DOM渲染 ...

  4. web前端高级React - React从入门到进阶之组件的懒加载及上下文Context

    第二部分:React进阶 系列文章目录 第一章:React从入门到进阶之初识React 第一章:React从入门到进阶之JSX简介 第三章:React从入门到进阶之元素渲染 第四章:React从入门到 ...

  5. react父子组件,兄弟组件,爷爷到孙子组件笔记

    import React from 'react' import App from './App' // 1.父传子. // 2.子传父 class ComCent extends React.Com ...

  6. 【React系列教程五】父子组件传值、defaultProps和propTypes

    一.父组件给子组件传值(即子组件调用父组件数据和方法) 1.在调用子组件的时候,定义一个属性  <Header msg='首页'></Header> 2.子组件中通过 this ...

  7. react之纯函数、函数组件、类组件、纯组件

    一.纯函数 Pure Function 定义:一个函数的返回结果只依赖于它的参数,并且在执行的过程中没有副作用,我们就把该函数称作纯函数. - 特点: 1.函数的返回结果只依赖与它的参数(同一个输入只 ...

  8. React子组件给父组件传值, 父组件引用子组件并给子组件传值

    本博客代码是 React 父组件和子组件相互传值的 demo:实现封装一个折线图,折线图选择下拉框,获取下拉框点击的值并且传给父组件根据下拉框筛选的条件更新视图:效果图如下: 父组件代码: 代码解析: ...

  9. react hooks使用_如何使用Hooks将React类组件转换为功能组件

    react hooks使用 by Balaganesh Damodaran 通过Balaganesh Damodaran 如何使用Hooks将React类组件转换为功能组件 (How to conve ...

最新文章

  1. Python爬虫之selenium库使用详解
  2. 《JavaScript 高级程序设计》精读笔记
  3. Openfire3.9.3源代码导入eclipse中开发配置指南(转载)
  4. python读取单波段影像dem
  5. Docker与.Net项目类型
  6. matlab机器人画圆
  7. 计算机专业英语交换机,计算机专业英语词汇
  8. MATLAB实现三边定位
  9. iOS 适配iPhone XR/XS/XS MAX
  10. 能量信号、功率信号及能量谱、功率谱
  11. 基因表达谱热图的绘制
  12. 如何一下清空微信好友_微信清理好友方法|微信如何正确清理已删除你的微信好友 微信清理好友方法介绍_东坡下载...
  13. 运行在命令行的微信 cmd-wechat-terminal
  14. 纯CSS实现手风琴效果(附演示)
  15. 智能硬件产品的测试经验总结
  16. Verilog专题(二十五)Lemmings4
  17. JAVA飞信_java调用飞信接口发短信 - 贪吃蛇学院-专业IT技术平台
  18. git提交如何忽略某些文件
  19. 正确的Python学习路线图,来了!
  20. Java对性别默认值为男_当对象或对象属性为空时,如何安全给对象或对象属性添加默认值...

热门文章

  1. 如何提升w ndows10系统网速,Win10更新后网速变慢怎么办?教你一招提升Win10网速...
  2. CVE-2017-8570微软office漏洞复现与研究
  3. 非线性规划:实例与matlab应用
  4. 创业前期怎么做个简单易行的计划?
  5. Win8Metro(C#)数字图像处理--2.26图像减法
  6. 深圳绿色建筑人才需求持续增长
  7. 阿波罗apollo使用方法+领英使用
  8. 04oracle单表查询、连接查询、子查询
  9. WorkNC3D沿面精加工快速修圆小技巧
  10. 阿里云手机验证码获取接口【接口对接的时候要仔细把里面的参数换成自己的参数即可】