浅谈React构建项目的思考过程
来源:互联网 发布:战地1玩家数据 编辑:程序博客网 时间:2024/06/05 08:14
1、第一步:把UI拆分为一个组件的层级
一个独立的组件的标准:单一功能原则——一个组件在理想情况下只做一件事情。如果它要做的事情不止一件,它就应该被分解为更小的组件。
组件拆分至关重要,因为拆分粒度过大不利于组件化的重用,粒度过小则会显得冗余过多,且复杂度过高。
2、第二步:用React创建一个静态版本
要构建渲染数据模型的可重用组件库,首先构建一个静态版本的组件,静态版本的组件利用 props 传递数据。props 是一种从父级传递数据到子级的方式(state仅仅是为具有互动性,也即随时间变化的数据所预留的,静态版本还不需要用到state)。
可以自顶向下或自底向上的构建组件,在较简单的例子里,通常自顶向下要容易些,然而在更大的项目上,自底向上地构建更容易,并且更便于伴随着构建写测试。
由于是静态版本,组件只有 render() 方法。在层级顶端的组件将会接受数据模型,并将其作为一个prop,如果改变了底层数据模型,并再次调用 React.render() ,UI将会更新。React的单向数据流(单向绑定)的优点是:模块化和快速。
3、第三步:确定最小但完备的state
要让UI互动,需要触发底层数据模型发生变化,React用 state 来让UI互动变得容易。
要正确构建app,首先需要思考app需要的state的最小组,思考的依据如下:
① 是通过props从父级传递来的吗?如果是,它可能不是 state。
② 随时间变化吗?如果不是,它可能不是 state。
③ 能基于其他任何组件里的state或props计算出吗?如果是,它可能不是state。
有关React的state和props的介绍请见:http://blog.csdn.net/zhouziyu2011/article/details/70741653
4、第四步:确定state应该存在于哪里
确定好最小(但完备)的state后,接下来需要确定哪个组件可以改变或拥有state,确定方法如下:
① 确定哪些组件要基于state来渲染内容。
② 在所有需要基于state来渲染内容的组件层次之上,找出共有的单一组件。
③ 要么是共有的单一组件,要么是其他在层级里更高级的组件应该拥有state。
④ 如果不能找到一个组件让其拥有state,可以简单地创建一个新的组件让其拥有state,并把它添加到比共有的单一组件更高的层级上。
5、第五步:添加反向数据流
在层级深处的子组件需要更新 父组件里的state时,React 提供了一个 ReactLink 插件来实现双向数据绑定。
备注:理解React构建项目的思考过程可以参考——
React实现输入框:http://blog.csdn.net/zhouziyu2011/article/details/70755812
React实现过滤器:http://blog.csdn.net/zhouziyu2011/article/details/70767636
- 浅谈React构建项目的思考过程
- 构建我的第一个react项目
- 从无到有构建react项目
- webpack构建react项目
- 关于React的思考
- React Navtive 的思考
- React配合Webpack构建项目
- dvaJs + react 快速构建项目
- webpack构建react项目和处理组件的依赖
- 通过creact-react-native-app构建项目遇到的坑
- Android项目的自动构建过程
- Spring MVC项目的构建过程
- 浅谈项目管理的几大过程
- 浅谈项目管理的几大过程
- 浅谈初次做外包项目及背后的思考
- SSH项目构建过程
- 初步构建项目过程
- java 项目构建过程
- 二叉树的非递归遍历
- 二分查找
- JavaScrip---Json技术学习for--in语句
- Web开发之CSS
- oracle数据库引擎转换
- 浅谈React构建项目的思考过程
- Qt发布项目自动导入动态链接库生成exe
- Android 日志类型
- 驱动调试之printk的使用
- java的内存分配
- “IEEE 802.11”是怎么来的?
- vlayout使用解析
- js中Array.filter()的妙用
- 24. Swap Nodes in Pairs 题解