【发布时间】:2015-09-09 14:59:22
【问题描述】:
我正在使用react-router 库和Flux 架构构建一个React 应用程序。
现在出现了一个疑问。我应该预先加载所有必需的数据,还是让每条路线在适当的时候加载它需要的数据?当用户通过编辑页面进入应用程序时,会很奇怪,当他保存表单时,它会转到对象列表,但在获取数据之前它是空的(只有一个对象)。
最好的方法是什么?
【问题讨论】:
标签: reactjs reactjs-flux flux react-router
我正在使用react-router 库和Flux 架构构建一个React 应用程序。
现在出现了一个疑问。我应该预先加载所有必需的数据,还是让每条路线在适当的时候加载它需要的数据?当用户通过编辑页面进入应用程序时,会很奇怪,当他保存表单时,它会转到对象列表,但在获取数据之前它是空的(只有一个对象)。
最好的方法是什么?
【问题讨论】:
标签: reactjs reactjs-flux flux react-router
您不希望深入预加载数据以预测用户将要做什么。它改善了列表屏幕的用户体验,但降低了编辑屏幕的用户体验。我一直在这条路上。一开始没问题,但是随着需求的变化,并且您开始也加载这个或加载那个,UX 真的走下坡路了。
在 Flux 中,您应该只在 Action 中加载数据。要为您的组件初始化数据,您可以从componentWillMount() 调用相应的操作。
如果您担心用户第一次导航到列表屏幕时看不到数据,您应该显示某种加载指示器。
如果您的数据加载缓慢,您应该实施渐进式加载方案(一次可能 5 个项目)。
对于外观示例,只需打开 facebook.com 上的主新闻提要。请注意,最初(取决于您的互联网速度),没有列出任何故事。您会看到将加载故事的模糊框。随着数据的加载,故事会出现。他们还实现了渐进式加载。请注意,当您(快速)向下滚动页面时,您会在加载和呈现较旧的故事之前在页面底部看到那个模糊的框。
【讨论】:
init() { this.data = { ambients: [{id:1}, {id:2}], selectedAmbient: {id:2} } }。