这是我在学习react框架时的个人理解,包含个人总结和案例中代码的分析,对于react中部分与内存分配相关的原理还是不是很懂:
1.个人总结:
flux架构的理解:
flux架构中数据是单向流动的;
view[components]经过出发产生action,action通过转发器dispatchet转发至store中,在store中action被注册在action中的回调函数接收和解析,通过计算store会更新store中的数据【存放组件状态的对象】,同时发送事件信号,发送的事件信号将被添加了事件监听对象的组件监听,
当组件监听事件成功后会调用组件的this.setState()函数更新组件的状态,从而驱动组件的重新渲染过程.
flux中各种model推荐的构建的顺序:
1.Dispatch在整个应用中是全局唯一的,可以通过 new Dispatcher()创建,用于转发action;
2.创建每个组件【每类】组件对应的action,在action中接收来在组件的数据并创建action对象,通过dispatcher转发到store中,之后会调用在store中注册的回调函数,解析action更新storez中的相关数据;
3.创建组件的store,在store中存储组件的初始状态,在store中完成的工作是生成新的数据并发送更新信号;
4.创建对应的组件,在组件类中首先应该获取初始值,并添加监听函数,动作响应函数。
以上flux构建项目的步骤只是本人总结归纳的,具体的步骤以实际开发为准;
A.flux中应该注意的问题:action为一个纯函数,多次引用在每个引用model的存储空间中初始化了多分实例,但是其产出只依赖于输入,所以无论整个应用中生成的实例是唯一的还是多个对整个应用功能的实现是不影响的;
B.Dispatcher对象在多次的引用过过程中不会生成多个实例,其底层只用的是单例模式实现的,因此在flxu应用中,我们使用的dispatcher对象是全局唯一并且是所有的模块共享的;只有这样我们才能保证在Action中调用了Dispatcher.dispatch(action);之后会去调用在store中注册的回调函数计算出新的数据[一般认为这个回调函数的调用时自动完成的]。
C:每个组件对应的store在全局范围内是唯一的,这样可以办证在不同的地方进行引用时可以获得同步的数据,这是通过浅复制的原理实现的;
2.案例代码分心
action:
|
|
store
|
|
dispatcher
|
|
components
|
|