2017-07-15 59 views
1

Store.subscribe(()=> {})是觀察Redux商店中變更的唯一方法嗎?ReactJS redux訂閱聲明

我取回我的用戶異步和時間的應用程序加載的用戶存儲是最有可能空的,所以我必須做這樣的事情:

store.subscribe(() => { 

     var users = store.getState().users; 
     if(users.length > 0) { 
      this.setState({ ... }) 
     } 

     }); 

現在我有3個或4個組件我有在他們每個人中使用相同的邏輯。我的問題是:這個問題有更好的解決方案嗎?在全球範圍內聆聽Redux中更改的方法?

+0

你讀過的反應,終極版的文檔? – Alexander

+1

通常情況下,您只需訂購在頂層容器上存儲更改並通過道具將它們傳遞給組件。如果您發現傳遞許多道具太過於粗暴,您應該只在子組件中重新訂閱。 https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0 –

回答

2

這裏有兩個答案。

是的,store.subscribe()是觀察商店變化的唯一方式(與零售店也實現,所以你如果你使用observables你也可以訂閱這種方式)的異常例外。

但是,官方React-Redux的connect函數已經處理了商店訂閱和提取組件需要的數據的過程。不要自己寫商店訂閱邏輯 - 使用connect。 (我寫在Reddit上explaining why you should use React-Redux instead of manually subscribing長的評論。)