本文仅仅是对Flux的个人理解,做交流之用,如果错误,还望大家指出!
刚才用了1个多小时,看了一下Flux,想说一下自己的理解。可能大家会觉得,只花了这么少的时间,就跑出来说自己的理解,是件很可笑的事情。不过我想说下写这篇文章的原因。
学习是一个渐进和修正的过程。
多东西都没办法一下子掌握,那么就需要在实践中反复加深理解。学习在一定程度上是一个试错的过程。
既然要试错,就要有自己的理解,然后在实践中进行检验。唯有有了一个理解,才能检验对错。如果没有理解,往往会出现懵懵懂懂,原地打转的现象。
于是有了下面这篇笔记。
对Flux的理解
SICP上有句话是说,编程无外乎两件事,组合和抽象。我也打算从这两点出发来理解Flux。
一个功能,我们要如何把它分解成不同部分?或者说我们用什么样的部分来组合成出这个功能?
首先是用户能看到的部分,在Flux中就是View。View用来处理页面结构以和交互(用户操作页面后会产生数据变化,react的做法是,直接重新渲染view)。
之后是用户操作,用户的操作被抽象为Actions,比如创建评论,比如删除评论,都是一个Action。这个Action类似Rails controller中的Action。
Action是用来描述用户行为的(Describe a user’s action)。
用户进行了操作,会使数据产生变化。处理这些变化(state)的责任由Dispatcher和Store共同完成。具体来说,Store是针对一类数据进行操作,比如评论。而Dispatcher是用来处理多个Store。
参考
Flux 架构入门教程
The ReactJS Controller View Pattern
Flux Utils
浅谈 React、Flux 与 Redux