1. 程式人生 > >【react】--------------flux-------------【劉】

【react】--------------flux-------------【劉】

一、什麼是Flux

  Flux 是一種架構思想,專門解決軟體的結構問題。它跟MVC 架構是同一類東西,但是更加簡單和清晰。

 

二、flux的基本概念

  (1) 、Flux由4部分組成

    1、View:檢視層

    2、Action(動作):檢視發出的訊息(比如mouseClick)

    3、Dispatcher( 派發器 ) :用來接收Action、執行回撥函式

    4、Store(資料層):用來存放應用的狀態,一旦發生改動,就提醒View更新頁面

  (2)、Flux的流程
    1、使用者訪問View

    2、View傳送使用者的Action

    3、Dispatcher收到Action,要求Store進行相對應的更新

    4、Store更新後,發出一個“onchange”事件

    5、view接受到“onchange”事件後,更新頁面

 

三、store程式碼流程

  

 

四、元件中呼叫Store

  import Store from "./store";

 

  class App extends Component{

  constructor(props){

  super(props);

  //呼叫公共資料

  this.state = Store.getState();

  }

 

五、建立Dispatcher.js

 

  安裝flux:cnpm install flux --save-de

  (1)在View層的方法中建立Action並傳遞給dispatcher  方法: dispatcher.dispatch(Action)

 

  (2)判斷型別Action的type是否相等,如果相等則呼叫Store的方法進行修改資料(注意:修改資料的方法只能在Store中使用,這樣的方式很類似於後端的MVC模式)

 

六、監聽資料變化

  資料發生改變View層頁面進行更新

 

  (1)在Store中有提供資料改變的函式,在資料改變的函式中呼叫事件觸發this.on("事件名稱")

 

  (2)同時在Store中在建立一個函式,函式內部進行事件監聽供View層呼叫,當事件觸發時會呼叫這個函式,然後我們this.setState進行資料的改變

 

  Store中的事件監聽和觸發

 

元件中呼叫事件監聽的方法用於改變資料

 

  如果還想細化程式碼結構我們還可以將Action分離出去(嘗試一下)

 

  在專案中Store和dispatcher可以有多個,非常靈活

 

 

  除此之外我們的View層既有view層又有controller層所以我們還可以進行再次拆分