這是我對redux的第一個應用。我在之前針對每個頁面模式都遵循單個縮減器,但隨着應用程序複雜性的增加,我發現需要將其分解爲子縮減器。所以我已經完成了我的功課,並且已經通過了redux上指定的示例,並且我認爲我目前的情況允許我使用selectors
,但我不確定構成我的縮減器的最佳實踐是什麼。減速機構成的最佳實踐
此外,我所遵循的方案是每頁一個智能組件,其他組件僅僅是將任何傳遞給它們的SFC都吐出。 頁面頂部有註冊表單,並有異步操作。底部顯示一個數組及其後端調用。
所以,這是我的頁面初始狀態:
const initialState = {
isFetching: false,
isCreating: false,
isDeleting: false, // Delete object from the bottom part
formStatus: '', // Displays status of the top part of backend call
blockStatus: '', // Status for the bottom part. GroupsList
statusType: '',
groupsList: [] // Fetch list for the bottom part
};
另外,我必須保持一種過濾列表後它從groupsList到後端。在這裏使用選擇器會是一個好例子嗎?
此外,還有另一個調用,從頁面的底部開始,從列表中的每個對象開始,並且它將獲取更多列表,我將在groupsList
的每個對象中追加這些列表。因此,對於潛在的情況並記住建議將狀態保持正常化,分解我的減速器有什麼好的做法?
編輯: 我相信我的信息缺少一些關鍵點。因此,這部分的應用程序,它分爲兩部分。因此,我已將此組件連接到名爲GroupsPage
的商店。 GroupsPage
還有兩個組件GroupsForm
和GroupsBlock
。
GroupsForm
有一堆文本字段,允許用戶創建一個新的 組和創建成功將它加入到GroupsBlock
組列表的數組 。GroupsBlock
還有一個Table
組件,它顯示我在頁面加載時從 API中獲取的組列表。組中的每一行都有兩個圖標。一個用於編輯組信息和其他用於刪除組的 。
刪除和其他一切都很簡單。併發症是當編輯按鈕觸發時。在點擊編輯按鈕時,有一個API調用來獲取一些可用的組屬性,我可以通過模式將拖放拖放到我的組列表中,並將更新後的組列表發佈到後端。
所以我減速器組成是這樣的(詳細):
const initialState = {
isCreating: false,
isUpdatingContainersGroup: false,
isFetchingGroups: false,
isFetchingGroupHosts: false,
isDeleting: false,
didCreate: false,
didDelete: false,
didUpdateContainersGroup: false,
didFetchGroups: false,
didFetchGroupHosts: false
formStatus: '',
blockStatus: '',
statusType: ''
groupsList: [properties: [{}...{}]],
availableProperties: [{}.. {}],
newProperties: [{}... {}] // Have to maintain an array for new properties added. To post updated data
};
所以,我個人認爲這是所有漂亮搞砸了,我需要某種子減速,可能選擇以及和需要在整個應用中實現它以保持一致性。
重要我在整個應用程序中遵循相同的模式。每一頁都有一個表格和一個塊。而且對於每一頁我都有一個連接組件,其他所有內部組件都只是一個SFC。
好的,我會馬上這樣做。 – Umair
太棒了!謝謝。 – nshoes
請檢查編輯。 – Umair