2016-04-21 33 views
0

我有一個非常OO的結構,並且由於事件的混亂,我正要遷移到React/Redux。 我很好奇如何處理當前的模塊做的,我有一個具有架構喜歡的對象:從事件驅動的OO到Redux架構

User { 
    getName() 
    getSurname() 
    etc... 
} 

而且,他們被用來作爲原始JSON數據fasade /工廠爲我所用,以通過JSON有很多的這些並操縱它(可變數據)

現在如何解決這個問題?

我到了我有一個異步動作調用的部分,我從api接收原始數據,而不是什麼? 我應該通過'複雜'的對象與他們的getters/setters來陳述?據說它是不可變的,所以它看起來不像Redux推薦。

或者這個類類元素轉換爲像存取:

function getName(rawJson) { 
    return rawJson.name 
} 
function setName(rawJson, name) { 
    return Object.assign({}, rawJson, {name}) 
} 

解析它在行動和行動返回rawJSON大塊減速器和比它貼到新的狀態?

編輯:

用於用戶A的簡單僞代碼模塊:

function User(raw) { 
    return { 
    getName: function() { 
     return raw.name 
    } 
    setName: function(name) { 
     raw.name = name 
     return this 
    } 
    } 
} 

我的觀點是關於移動的所有數據和壓扁/在商店歸它 - 會是細以具有例如陣列存儲中的用戶對象?或者他們都應該是純粹的json。我想確保將所有這些對象變成基本價值的真正唯一正確的方法,因爲它會有很多工作。

+0

給出這些外牆的例子之一。 – Brandon

+3

問題不是很清楚,你需要完成什麼,以及發生了什麼...... – dandavis

+0

已編輯,請檢查 – Marcus

回答

0

不知道這將是完全相關的,但如果我理解你的問題,並把它的另一種方式:在那裏把業務邏輯和其他驗證/操作:

https://github.com/reactjs/redux/issues/1165

我親自跟隨這個趨勢也是因爲我把所有的異步動作操作都存放在我的動作創建者中,然後再按照我在reducer中選擇的格式存儲它們。 enter image description here

在這裏,我選擇將我從API獲取的任何對象轉換爲JSON。同樣,您可以在調度成功請求以存儲您的reducer之前執行您需要的任何邏輯。

希望幫助/與任何你所要求的相關...

+0

好的,但你從動作創建者返回什麼類型的數據?我的意思是有效載荷是一個JS對象?存儲對象(包括方法,原型等)是否可以接受? 我的觀點是,我需要發送對象回服務器後,用戶進行更改,然後按'保存',因此它必須保持與以前一樣的結構和屬性,我恐怕需要做大量的轉換/解析在從API到存儲和回到API的路上......(在商店我們保持一切正確,所以一些典型的商業數據將與諸如......之類的應該混合在一起,應該顯示cookie信息) – Marcus