2017-05-08 48 views
0

mapStateToProps返回一個對象有2把鑰匙,提供商 & 計劃。 直到計劃已經是道具的屬性後才能解決供應商的價值。 供應商取決於計劃的屬性(plan.provider)。如何調用mapStateToProps

我的想法是,在第一時間mapStateToProps被調用,它將返回如下:

(這確實是發生了什麼)

{ 
    plan: [Object], 
    provider: undefined 
} 

既然計劃得到解決,映射到道具我需要mapStateToProps再次被調用,以便供應商可以解決。第二次mapStateToProps應該返回:

{ 
    plan: [Object], 
    provider: [Object] 
} 

這是爲了應對這樣的情況下正確的方法是什麼?

回答

0

是的,這是一個完全合理的方法。假設發出第二個動作,將適當的數據添加到商店,mapState將重新運行並返回更新的值,並且該組件將重新呈現。

您的React組件應該被寫入,以便它可以安全地處理丟失的provider prop,比如檢查它是否存在並返回「loading ...」組件,如果它不存在。

0

我不認爲這是解決這個問題的好方法。我相信如果你有計劃作爲承諾或異步操作,你必須等待更新提供者值之前,你需要做的Redux Middleware.Most在我看來是可靠的,他們是Thunk,它允許你編寫異步代碼操作,然後當Promise解決時,您可以在您的狀態下更新provider

要避免undefined供應商在用戶界面的價值,請使用defaultProps,這將有助於您避免由於undefined供應商的問題。

我希望有幫助。

相關問題