組件

2016-07-31 32 views
5

我建設有反應,本地和終極版,而且我通過組織我的特色項目結構,這樣一個移動應用程序之間共享Redux的行動。 JS
--- Component1Reducer.js
---...
COMPONENT2/
--- Component2Actions.js
--- Component2Reducer.js
---...組件

在我看來,這種類型的項目結構令人吃驚,原因很多,首先是它的可擴展性。
到目前爲止我遇到的唯一問題是,當兩個不同的組件必須調度相同的操作(例如文本框中的簡單文本更改)時。
在2個不同的文件中重寫完全相同的動作並沒有意義,而且我也知道將動作從其自己的組件導入到另一個文件中是非常糟糕的做法。
我曾想過在全局模塊中保存這些「可共享」操作,然後將它們導入到各個組件中,但我不確定這是否是一種好的做法。
我想知道處理這種情況的最佳方法。
在此先感謝。

+0

在我看來,如果你沒有在同一時間耗時不同的組件相同的狀態,您可以重新使用的行動。但是,將來如果您需要同時在同一UI中同時呈現兩個組件,則會迫使您爲此創建另一個操作類型。 – anoop

+0

爲什麼組件不能導入調度的動作?你能解釋爲什麼你需要複製它嗎? –

+0

@WarrenMir因爲由於我的項目是按功能組織的,所以如果我在組件模塊中寫入一個動作,將它導入另一個模塊是一種非常糟糕的做法。 –

回答

4

您可以在多個減速器中處理相同的「ACTION_TYPE」。

...動作是全球設計。他們的目的不是要依賴於特定的減速(丹·阿布拉莫夫)

你可以處理所有的減速機的「註銷」的行動,這將只返回初始狀態..和應用程序設置爲默認值

例如..

const postReducer = (state = initial, action) => { 
    swtich(action.type) { 
    ... 
    case "LOGOUT": 
    return initial 
    default: 
    return state 
    } 
}