react项目组件化思考
三个原则
- single store
- render from top
- immutable data
single store,便于组件之间通信。
render from top,因为store就一个,每次修改后,从最顶层开始渲染,依赖DOM diff和人工shouldComponentUpdate判断来提高渲染性能。
immutable data,当你使用第三方组件,为了防止他内部对你的single store进行黑箱子修改操作,所以你可以传入immutable data给他。根据第三方组件的回调结果,自己来控制是否更改single store。
组件类型
通用基础组件
两种实现方式。
一,纯依赖props(无state),可通过forceUpdate来更新自己。
二,有依赖state,通过componentwillreciveprops生命周期函数接受props,来更新state。
业务基础组件
相当于业务树的叶节点。如需复用,构建方式同通用基础组件二。
业务路由组件
相当于业务树的枝节点。也是业务基础组件的容器。负责路由父组件的props给子组件(业务路由组件或业务基础组件)。
增删查改
方式一:
增
填写数据,验证数据,插入数据,重新查询数据列表。删
确认删除,重新查询数据列表。查
展现页数,展现条数。实际就是对总页数进行分页。改
填写数据,验证数据,更新数据,重新查询数据列表。
方式二:
适用于数据量不大的情况。
增删查改,都使用同一套数据。
思考
树
DOM用树表达,样式也可以用树表达,那么组件UI状态State,Store,Actions呢?
为什么都用树表达?是为了一个组件的DOM,样式,State,Store,Actions能互相对应。
五树合一,网页我有。业务组件的通信
因为是一个store,业务组件里也基本不会有props,state。直接从一个store里增删查改数据,从而实现业务组件的通信。第三方组件
使用设计不当的第三方组件,小心它对你正常业务代码的分离。
react项目组件化思考的更多相关文章
- 移动web端的react.js组件化方案
背景: 随着互联网世界的兴起,web前端开发的方式越来越多,出现了很多种场景开发的前端架构体系,也对前端的要求日益增高,早已经不是靠一个JQuery.js来做前端页面的时代了,而今移动端变化最大,近 ...
- React 面向组件化编程 - 封装了webpack - npm run build 产生的包的 /static 引用路径问题
React 面向组件化编程 面向对象 ----> 面向模块 ----> 面向组件 套路: 注意: 组件名必须大写开头: 只能有一个根标签: <input />虚拟DOM 元素必 ...
- CSS组件化思考
为什么组件化? 分层设计,代码复用,减少冗余: 维护方便,弹性好: 如何组件化? 目前代码分成三级: 第一级粒度最细,是基础,主要包含字体配置,颜色配置,UI框架(比如MUI或者pure.css): ...
- React: 研究React的组件化
一.简介大概 在以往的Web开发中,会把web页面所有的复杂控件作为一个单一的整体进行开发,由于控件之间需要进行通信,因此不同的组件之间的耦合度会很多,由于开发一个控件的时候要考虑到控件与控件之间的联 ...
- React的组件化
所谓组件,即封装起来的具有独立功能的UI部件.React推荐以组件的方式去重新思考UI构成,将UI上每一个功能相对独立的模块定义成组件,然后将小的组件通过组合或者嵌套的方式构成大的组件,最终完成整体U ...
- 组件化和 React
一,对组件化的理解 1,组件的封装 -视图 -数据 -变化逻辑(数据驱动视图变化) 例: import React, { Component } from 'react'; import List f ...
- iOS 从零到一搭建组件化项目框架
随着公司业务需求的不断迭代发展,工程的代码量和业务逻辑也越来越多,原始的开发模式和架构已经无法满足我们的业务发展速度了,这时我们就需要将原始项目进行一次重构大手术了.这时我们应该很清晰这次手术的动刀口 ...
- 【前端知识体系-JS相关】组件化和React
1. 说一下使用jQuery和使用框架的区别? 数据和视图的分离,(jQuery数据和视图混在一起,代码耦合)-------开放封闭原则 以数据驱动视图(只关注数据变化,DOM操作被封装) 2.说一下 ...
- Cocoapods组件化之搭建组件化项目框架
一,概述 随着公司业务需求的不断迭代发展,工程的代码量和业务逻辑也越来越多,原始的开发模式和架构已经无法满足我们的业务发展速度了,这时我们就需要将原始项目进行一次重构大手术了.这时我们应该很清晰这次手 ...
随机推荐
- vim正则表达式(转)
Vim中的正则表达式功能很强大,如果能自由运用,则可以完成很多难以想象的操作. 如果你比较熟悉Perl的正规表达式,可以直接参照与Perl正则表达式的区别一节. 一.使用正则表达式的命令 使用正则表达 ...
- web.xml配置error-page
一. 通过错误码来配置error-page <error-page> <error-code>404</error-code> <location>/e ...
- papi酱视频因违规遭下线整改,你知道原因吗?
今日4月18日,在微信上的一篇<papi酱遭广电总局封杀 罗振宇1200万恐打水漂>的文章迅速转了起来,说的就是现在网红第一人“papi酱”的视频被广电总局责令下架的消息.箭头直指papi ...
- LoadRunner11.00入门教程
安装成功后,根据教程,有自带的应用程序供新手快速掌握Loadrunner的使用.测试应用是一个基于web的旅行社应用程序,也就是供用户在线预订机票的应用.根据教程和操作,重新总结一下测试流程以及遇到的 ...
- IIS删除http header信息如Server, X-Powered-By, 和X-AspNet-Version
响应头信息原始头信息 Cache-Control private Content-Length 78457 Content-Type text/html; charset=utf-8 Date Fri ...
- JS之获取样式
基本代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- LaTex学习笔记——LaTeX公式换行
ps. 1.“\!” 表示其前后字符之间无间隙 2.暂留 3.段落中的数学表达式应该置于( 和), $ 和$ 或者begin{math} 和end{math} 之间. ...
- csuoj 1511: 残缺的棋盘
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1511 1511: 残缺的棋盘 时间限制: 1 Sec 内存限制: 128 MB 题目描述 输入 ...
- ligerui_ligerTree_005_动态增加“树”节点
动态添加ligerTree节点:效果图: 源码地址:http://download.csdn.net/detail/poiuy1991719/8571255 <%@ page language= ...
- nodejs框架express快速开始
认识express 创建应用 get请求 简述中间件 all方法 use方法1 use方法2 回调函数 获取主机.路径名 Get请求 - query Get请求 - param Get请求 - par ...