2015-12-23 40 views
4

正如我從反應表單文檔中瞭解到的,通常在Reducer樹的根部放置一個form縮減器,而redux-form將把每個表格的狀態放在這個form鍵,基於表單的名稱。在redux-form中的多個不同安裝點上綁定表格

但是,這將導致一個奇怪的結構,其中某個樹的表單數據是在表單鍵下,而不是與其他相關的狀態數據。在此示例中,應用程序會存儲服務器中可能的帳戶類型列表,這些帳戶類型在邏輯上應與註冊表單本身分組。然而,隨着終極版形式,他們會在完全不同的子樹:

  signup   
     /
     forms 
    / \ 
    / login 
    /
root 
    \  login--signinMethods 
     \ /
     header 
      \ 
      signup--accountTypes 

我寧願一個更有組織的樹是這樣的:

   form   
      /
     signup 
    / \ 
    /  accountTypes 
    /
root 
    \  signinMethods 
     \ /
     login 
      \ 
      form 

這可能與Redux的形式,或任何其他redux庫?

+0

我很好奇你看到了什麼好處導致(分裂形式的狀態樹)?就我個人而言,我認爲在根級保留一個「表單」樹來容納所有表單數據是最有意義的(就像redux-form一樣)。我想你可以利用formReducer提供的內容並將你自己的自定義縮減器在你的狀態樹中的不同位置(如你所建議的)深入到內部。那時候,我覺得你可能會純粹出於偏好而不是真正的優點來對抗你的工具(並重新發明車輪)。 – ErikTheDeveloper

+0

是的,這將與工具作鬥爭,如果需要一堆努力,我不會這樣做。不過,在這種情況下,每個表單可能有一個''選項應該位於樹的同一分支中,而不是完全不同的位置。 – Miguel

回答

2

嘗試使用reduxMountPoint選項:

使用該屬性的強烈勸阻,但如果你絕對 需要比形式之外的其他地方安裝你的終極版型減速機在 你Redux的狀態,你將需要指定您使用此屬性安裝它的密鑰 。默認爲'form'。

+0

afaik仍然將所有表單安裝在一個單一的鍵下,只是與'form'不同的一個 – Miguel

+0

據我所知,您可以爲每個使用的表單設置reduxMountPoint,從而使它們獨一無二。 –

+0

哦,你是對的!我認爲這是一個全球性的環境。下一個問題是找出爲什麼它'非常灰心' – Miguel

1

它是按照它的方式構建的(一個減速器處理所有形式),無需在每次需要添加新形式時添加新的減速器。您只需添加一次減速機,並大部分時間忘記它。

相關問題