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