2017-04-07 145 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占位符的内容,大致与内容如何将目光加载一次。

在很多情况下,什么都不能显示,特别是如果您的加载时间很快。如果加载时间通常较慢,则微调器可能是合适的。占位符内容需要多一点努力,但可以提供较少的刺激加载体验,因为可以立即显示页面结构,然后在加载数据时就可以填充数据。