2017-04-07 126 views
0

具有componentWillMount異步行動的創建者需要時間來完成,處理渲染完成

同時,組件呈現一次或兩次不提供,直到減速改變狀態的數據,幷包含它,

請澄清什麼是處理初始組件渲染(S)有沒有數據的最佳方式,

我發現自己做這樣的事情:

render() { 
    if (!this.props.item) return <div></div> 
    // this fails during initial renders without the if condition above. 
    const { item: { foo: { bar } } } = this.props 
} 

我知道我可以在mapStateToProps中擁有默認狀態,但當實體(如item.foo.bar)具有嵌套字段時,這不起作用。

謝謝。

回答

0

我認爲你應該使用mapStateToProps來將項目狀態(redux)與道具中的物品進行映射。例如,當完成異步任務時,道具中的項目將自動更改。 當道具改變時,組件將再次渲染。

在渲染功能,可以實現:

render(){ 
    { 
    !this.props.item ? <div>No data</div> 
    : <div> 
     item.foo.bar 
     </div> 
    } 
} 
0

這真的取決於你的應用程序,以決定它應該如何看時,它沒有它需要呈現的數據。常見的方法是

-show什麼

- 顯示正在加載的旋轉

-show佔位符的內容,大致與內容如何將目光加載一次。

在很多情況下,什麼都不能顯示,特別是如果您的加載時間很快。如果加載時間通常較慢,則微調器可能是合適的。佔位符內容需要多一點努力,但可以提供較少的刺激加載體驗,因爲可以立即顯示頁面結構,然後在加載數據時就可以填充數據。