摘要:那么動作生成器又是什么在程序語言的函數庫中,如果是個英文的名詞,通常都是代表某種對象或數據格式,例如動作就是個單純的對象。
這兩個是Flux架構中的參與成員,Redux中有說明Action的定義:
Actions(動作)是從你的應用送往store(存儲)的信息負載
你可能會一直在Action(動作)這里看到payload這個字詞,它是負載或有效數據的意思,這個字詞的意思解說你可以看一下,不難理解:
Payload用在計算機科學的意思,是指在數據傳輸時的"有效數據"部份,也就是不包含傳輸時的頭部信息或metadata等等用于傳輸其他數據。它的英文原本是指是飛彈或火箭的搭載的真正有效的負載部份,例如炸藥或核子彈頭,另外的不屬于payload的部份當然就是火箭傳送時用的燃料或控制零件。
這個Action是有一個固定格式的,叫作FSA, Flux Standard Action(Flux標準動作),格式會像下面這樣,是個JavaScript的對象字面定義:
{ type: "ADD_TODO", payload: { text: "Do something." } }
這樣一個用于描述動作的單純對象字面定義,就稱為Action(動作)。
為什么要先寫出明確的Actions(動作),也就是把所有的組件會用到的Actions(動作),全部集中寫到一個檔案中?這也是個硬規則,就像你如果參加奧運的體操比賽,每種項目都有規定的動作,在一定的時間內只能作這些動作,按照表定運行。主要還是因為Redux并不知道你的應用程序里會作什么動作,需要有一個明確說明有哪些動作的地方,在運作時以這個對照表為基準。
當然,Actions(動作)必需要有type(類型),而且在同一個應用中的type(類型)名稱是不能重覆的,它的概念有點類似于數據表中的主鍵屬性。
那么Action Creator(動作生成器)又是什么?
在程序語言的函數庫中,如果是個英文的名詞,通常都是代表某種對象或數據格式,例如Action(動作)就是個單純的對象。如果叫什么xxxxter或xxxxtor的,中文翻譯是"器"、"者",通常就是個函數或方法,像上面的reducer和這里的Action Creator,都是一種函數。
Action creator的設計也是由Flux架構來的產物,它是一種輔助用的函數,用來創建Action的。但因為設計的不同,在Redux中的Action creator比在Flux更簡單,它通常只用來返回Action對象而已,當然它本身是個函數,在返回前是可以再針對返回的動作數據先進行運算或整理的,例如像下面這樣的函數:
export function addTodo(text) { return { type: ADD_TODO, text } }
這個addTodo函數,有一個傳參,這個傳參就會用于組成Action對象中的payload(有效數據)。
如果一個Action對象簡單到連payload(有效數據)都沒有,通常會是個固定payload(有效數據)的動作,例如每動作一次+1或-1,或是每動作一次在true或false值切換,那么在Redux中允許連Action或Action Creator都可以不用寫了。但是這種情況大概只有在很小的應用,或是學習階段的例子才會這樣,如果應用還是有一定程度的復雜度,一定都是要寫出來的。
當然,Action Creator自然有它很重要的作用,其中之一就是處理有副作用的運行,例如計時器、Fetch/Ajax等等,因為reducer是一個強制無法有副作用的純函數,所以Redux中的副作用會寫在在Action Creator里,不過這需要再配合中介軟件(middleware)來運行,之后的章節會再說明。
注: Action Creator在Redux中并沒有一定要是個純函數,只是不建議在里面直接運行有副作用的函數。請參考這篇在stackoverflow的Reduce作者的回答。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81349.html
摘要:實例講解示例代碼地址在這里你可以通過命令到本地,也可以直接下載。之后便可以通過執行示例代碼。下面結合實例中的內容理解上述概念。更改應用的狀態通過方法將發送到函數中,進行狀態的更新。分別用來處理頁面和頁面狀態的更新。 實例講解Redux 示例代碼地址在這里 ,你可以通過git clone命令clone到本地,也可以直接下載。 然后通過執行npm install 安裝所依賴的模塊 。之后便...
摘要:沿著管道有兩組偵聽器中間件和訂閱。中間件是可以偵聽傳入的動作的函數,支持諸如,或偵聽器之類的工具。將視為一個帶有更新前更新后鉤子的全局對象,以及能夠以簡單的方式合成新狀態。應將兩者視為一體,并且不再需要文件導出類型的字符串。 難道現在狀態管理不是一個可以解決的問題嗎?直觀地說,開發人員似乎知道一個隱藏的事實:狀態管理的使用似乎比需要的更困難。在本文中,我們將探討一些你可能一直在問自己的...
摘要:應用這說明并不是單指設計給用的,它是獨立的一個函數庫,可通用于各種應用。在數據流的最后,要觸發最上層組件的,然后進行整體的重新渲染工作。單純在的對象上是沒有辦法使用,要靠額外的函數庫才能這樣作,這是一定要使用類似像這種函數庫的主要原因。 Redux的官網中用一句話來說明Redux是什么: Redux是針對JavaScript應用的可預測狀態容器 這句話雖然簡短,其實是有幾個涵義的: ...
摘要:只要一個有,那無論用什么設備訪問,都會得到這個還原也是相當簡單把數據庫備份導入到另一臺機器,部署同樣的運行環境與代碼。純粹只是一個狀態管理庫,幾乎可以搭配任何框架使用上述例子連都沒用哦親下一章進階教程 Redux 簡明教程 原文鏈接(保持更新):https://github.com/kenberkele... 寫在前面 本教程深入淺出,配套 簡明教程、進階教程(源碼精讀)以及文檔注釋...
摘要:不只為組件提供中的數據及擴展方法,它還為定義的組件添加了一系列事件操作,這些事件的核心點就是,然后可以在自己定義的組件內獲得。行為功能是對目的功能和有用行為的一種抽象。下一個中間件函數通常由名為的變量來表示。 redux 這個是好久之前寫的,一直忘記粘過來,里面有一些是寫作格式是我自己定義的,所以和segmentfault的markdown語法有出入,圖片也不能加載,所以原文效果可以在...
閱讀 2158·2021-11-15 11:36
閱讀 1486·2021-09-23 11:55
閱讀 2493·2021-09-22 15:16
閱讀 2030·2019-08-30 15:45
閱讀 1867·2019-08-29 11:10
閱讀 1032·2019-08-26 13:40
閱讀 919·2019-08-26 10:44
閱讀 3173·2019-08-23 14:55