2016-09-22 111 views
0

我實現使用ReactNative與終極版移動應用程序,我實現看起來像這樣的應用:我在ReactNative應用程序中正確執行了redux嗎?

Login (screen) 
|--> Search for an object (screen) 
    |--> Show that object and edit it (screen) 
     |--> Take 2 photos (each photo a screen) 
     |--> A last screen for make a new object and save it 

上述流程顯示每個屏幕是如何做好自己的工作,並傳遞到下一個屏幕。

我的應用程序的狀態是下一個:

{ 
    auth: { 
    logged: false, 
    token: '' 
    }, 
    somethingOfSideBar... 
} 

但我覺得我做的事情的方式是錯誤的,因爲大多數屏幕都有自己的狀態,通過例如searchSomethingScreen獲取從數據服務器,檢查它是否有效並啓用傳遞到下一個屏幕。我覺得我不是在做的事情,它假設做出改變整個州申請的行動,但我覺得我不需要比我更多的狀態。對我而言,全局事物是認證數據和側邊欄(因爲它存在於整個應用程序中)。

我應該爲每個屏幕更改做出操作嗎? 我應該在全局狀態應用程序中放置更多信息嗎?

還有一件事,我有一個AppContainer組件用於連接以訪問商店,但我傳遞了狀態和動作的部分以及子屬性,我也覺得這是錯誤的。

回答

2

我覺得Redux Reddit tutorial可能對您有用。這當然是給我的。

但我覺得我在做錯誤的方式,因爲大多數屏幕都有自己的狀態,例如searchSomethingScreen從服務器獲取數據,檢查它是否有效,並啓用傳遞給下一個屏幕。

用在終極版方式,API請求及其成功完成應分別映射到一個動作。在每個操作中適當地改變應用程序狀態(在縮減功能中),綁定到商店的視圖/屏幕將重新呈現。所以,如果你正在做一個API請求:

  • 創建Search容器,映射狀態searchResultsprops並結合Search組件。 (例如,請參閱this container。)
  • 消防措施REQUEST_SEARCH帶用戶輸入的搜索項。
  • AJAX請求被觸發。
  • AJAX請求已成功完成。消防行動RECEIVE_SEARCH與搜索結果。
  • SearchReducer存儲搜索結果。
  • 綁定Search組件重新呈現搜索結果。

我應該爲每個屏幕更改做出操作嗎?我應該把更多的信息放在全局狀態應用程序中嗎?

作爲一般規則,是的。但是有時我已經使用了組件狀態(不分派動作)來存儲組件本地的狀態(例如更新文本字段)。

還有一件事,我有一個AppContainer組件用於連接以訪問存儲,但我傳遞狀態和動作的部分以及子屬性,我覺得這是錯誤的以及。

通常,更高級別的組件應該是容器,它通過道具將狀態注入到無狀態組件中。您可以擁有多個容器,並且它們可以像組件一樣工作,因此您可以將容器嵌套在另一個容器中。我鼓勵你看看這些文檔,因爲它對我非常有用。 :)

+0

謝謝你的答案,它給了我一些開始重構我的應用程序的東西。當你說:AJAX被解僱時,我應該在「REQUEST_SEARCH」操作中進行抓取調用嗎? –

+0

是的,這是正確的。 ['fetch()'是一個Then-able](https://facebook.github.io/react-native/docs/network.html#handling-the-response),所以你可以添加一個成功的回調, RECEIVE_SEARCH'。 :) – logicalicy

相關問題