2016-07-07 83 views
1

我是新來的flux,這是一個最佳實踐問題。React + Flux中的REST輪詢

我有一臺服務器,我登錄我的應用程序,成功登錄我返回一個tokenId和該令牌的到期時間,我把它放入商店。

tokenId連接到後續API請求以確保我的會話有效。在超過失效時間之前,我需要發送一個生成新的tokenId的請求。

哪裏是最好的投票(setTimeout)令牌重建的地方?我相信從商店中調用Action或API Util打破了Flux Flow圖表,這不是視圖應該負責的邏輯......

+0

如果你只是想在自動失效之前得到一個新的有效期,那麼過期有什麼意義?爲什麼不刷新認證請求上的令牌?另外,將該令牌存儲在商店中似乎不是一個好主意。用戶每次刷新頁面時都需要重新登錄? – azium

+0

該令牌在用戶離開應用程序後長達20分鐘內有效。如果他們在令牌到期之前再次訪問該站點,它們將自動重新登錄。如果他們訪問該站點並且令牌已過期,則需要重新輸入其憑據。 – Screenpunch

回答

2

這是通用問題的具體版本「React/Flux體系結構應該觸發異步操作?「我已經討論過這個問題,並沒有一個「正確」的答案。有些選項:從商店

  • 觸發,處理updateToken動作開始時的超時。這具有保持商店中所有業務邏輯的吸引力,但卻使商店更難以測試和推理。一派思想認爲保持所有存儲過程同步可以簡化事情。

  • 從反應觸發,無論是在您的頂級App組件還是特定的高階組件中。您將使用componentWillReceiveProps來檢查令牌值的更改並啓動計時器。這有一些吸引力,因爲您已經在監聽商店更改,並且可以利用各種生命週期事件(例如,清除componentWillUnmount上的計時器)。你說得對,這不是「查看」邏輯,但是頂級React組件通常扮演的角色多於角色角色。

  • 觸發「登錄」操作。這或多或少是Redux/Thunk如何實現的,將異步進程留給了動作本身,但在Flux實現中並不常見。

  • 有一個單獨的API控制器,它使用動作與商店進行通信。有人仍然需要觸發loginController.login(),但進一步的異步進程由該控制器處理,更新通過操作來到商店。此控制器可能對令牌和續訂的詳細信息負全部責任,以便商店不必知道該情況。

+0

感謝您的幫助,*從頂層組件觸發React *感覺是最好的解決方案。 – Screenpunch

相關問題