在React开发中,一个典型的React组件通常会混杂着逻辑操作部分和展示部分.逻辑操作部分指的是和页面UI无关的内容,如API的调用,数据的处理,事件处理函数. 展示部分则指的是创建页面UI 的内容,就是组件中render 函数的内容. 简单地写一个组件Geo 来看一下,这个组件会展示我们的位置信息.为了简单起见,用create-react-app创建项目.项目中的src目录主要存放源代码,所以我们在其内部新建一个目录components, 用于存放我们的组件.一般我们直接写js 文件,暴露出…
Redux 的 React 绑定库包含了 容器组件和展示组件相分离 的开发思想.明智的做法是只在最顶层组件(如路由操作)里使用 Redux.其余内部组件仅仅是展示性的,所有数据都通过 props 传入. 那么为什么需要容器组件和展示组件相分离呢? 这里有个基本原则:容器组件仅仅做数据提取,然后渲染对应的子组件,记住这个点,Trust me! 看下面这个展示列表的例子,不区分容器和展示组件的情况 // CommentList.js class CommentList extends React.C…
react.js javascript 3 之前翻译了两篇关于Container&Presentational Component模型的文章,一篇是基础的Container和Component的定义,另外一篇是进阶版,因为翻译的太烂,感觉有很多错误,所以只放原文链接. 在这里我想讨论一下我自己对这个模型的一些想法. 注:便于书写,下面统一把Container&Presentational Components模型翻译为容器&展示组件模型 注:下面图片中的components文件夹指…
展示组件关心组件看起来是什么.展示专门通过 props 接受数据和回调,并且几乎不会有自身的状态,但当展示组件拥有自身的状态时,通常也只关心 UI 状态而不是数据的状态.(子组件)容器组件则更关心组件是如何运作的.容器组件会为展示组件或者其它容器组件提供数据和行为(behavior),它们会调用 Flux actions,并将其作为回调提供给展示组件.容器组件经常是有状态的,因为它们是(其它组件的)数据源.(父组件)…
Presentational and Container Components   展示组件   - 只关心它们的样子.   - 可能同时包含子级容器组件和展示组件,一般含DOM标签和自定的样式.   - 通常用this.props.children来包含其他组件   - 不依赖app其它组件,比如flux的actions和stores   - 不会定义数据如何读取,如何改变   - 只通过this.props接受数据和回调函数   - 很少有自己的状态变量,即使有,也是UI的状态变量,比如to…
关于我在React设计模式上做的一些思考: 一,项目里实战的经历 最开始我根据组件不同的职能定义,拆分了展示组件和容器组件两大类,后来随着业务逻辑越来越复杂,容器组件代码越来越冗长,我又加入了HOC高阶组件的设计模式,将部分共享的通用功能逻辑抽出,来加强容器组件的可维护性和可扩展性:但是后来发现在多个HOC的一起使用时会经常出现props冲突的问题,而且数据来源比较混乱,于是我们又将这部分组件改用了render props,只取小部分定制化的state,来减小复杂度. 但其实无论是HOC还是re…
回到占占推荐博客索引 设计模式(Design pattern)与其它知识不同,它没有华丽的外表,没有吸引人的工具去实现,它是一种心法,一种内功,如果你希望在软件开发领域有一种新的突破,一个质的飞越,那么,设计模式应该是你的必修之路!设计模式可以提高软件的扩展性,代码的健壮性和重复利用性,设计模式是实现软件工程四大原则( 开闭原则, 里氏代换原则,依赖倒转原则,接口隔离原则)的前提和基础! 下面是我的文章系列<说说设计模式>的目录 第一部分 创建型模式篇 说说设计模式~单件模式(Singleto…
原文:乐在其中设计模式(C#) - 观察者模式(Observer Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 观察者模式(Observer Pattern) 作者:webabcd 介绍 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新. 示例 有一个Message实体类,某些对象对它的操作有Insert()方法,当发生某些改变的时候,通知所有这些对象并执行Insert()方法. MessageModel usin…
原文:乐在其中设计模式(C#) - 装饰模式(Decorator Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 装饰模式(Decorator Pattern) 作者:webabcd 介绍 动态地给一个对象添加一些额外的职责.就扩展功能而言,它比生成子类方式更为灵活. 示例 有一个Message实体类,某个对象对它的操作有Insert()和Get()方法,现在扩展这个对象的功能. MessageModel using System; using System.Collec…
原文:乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabcd 介绍 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 示例 有一个Message实体类,某个类对它的操作有Insert()和Get()方法.现在需要把这个类转到另一个接口,分别对应Add()和Select()方法. Mes…