2017-02-24 52 views
0

我正在使用Redux進行狀態管理。我沒有遇到很多問題,直到我將導航堆棧適當地使用pop()。這個問題其實很簡單:組件不在pop上更新()

  1. 路線A顯示的一些數據和用戶移動到路線B.
  2. 在路線B用戶改變了路線A.顯示的數據
  3. 然後,用戶打後退按鈕,並彈出到路線A.
  4. 路線A尚未更新,即使已有redux狀態。
  5. 然後,我必須退出路由A,然後通過.push()返回路由A,以使更改生效。

我試圖找到解決方案,但不能。有什麼方法可以確定組件何時再次進入前臺屏幕?由於render()不會再被調用,因爲它在後臺沒有收到任何新的道具,所以沒有理由被調用。

回答

0

基本上pop(),組件已被掛載,所以它不會重新渲染任何東西。我真的希望他們最終爲組件添加一個onFocus()方法,但我處理它的方式是通過在您推送時更新組件A到組件B的方法,然後在彈出時調用它,以便組件A將重新呈現新的信息。

+0

這真的不可行,因爲我正在做的是一個信使,我回到所有不同的消息線程。在發送消息時,通過來自REST API的異步響應更新狀態。 – Hobbyist

+0

取決於你如何建立信使。您正在將消息發佈到服務器,並且您彈出的成功消息正確嗎?那麼當你彈出抓取更新後的列表數據時,不會有新的請求嗎?我有類似的設置,它沒有問題。 –

+0

不,我可以發幾條消息到服務器。在REST請求完成時更新狀態。但用戶可以接收新消息併發送新消息而不會彈出。我只是試圖竊聽線程組件的狀態。 '的setState(...);只能更新已安裝或安裝的組件。這是一個沒有操作。請檢查Messenger組件的代碼。因此,我無法通過將更新黑客傳遞給Messenger來更新我的'Threads'組件上的狀態。 – Hobbyist