【问题标题】:How would I render a isLoading element in react-native FlatList while it is loading data在加载数据时如何在 react-native FlatList 中呈现 isLoading 元素
【发布时间】:2018-07-29 02:29:43
【问题描述】:

我正在编写一个新闻提要,其中FlatList 正在从loadData 的后端获取数据,并在完成后renderItem。用例和我的代码都是标准的。完整代码在这里:https://gist.github.com/pgbovine/8910348,在 cmets 部分我提供了一个用例。

问题是获取数据需要一段时间,我想在数据加载时渲染一个占位符。目前OneFeed 在应用程序加载时是不可见的,当应用程序加载时,它会“跳”到外观中,让一切都变得非常刺耳。

目前还不清楚我将如何实现这一点......因为我无法控制OneFeed.rendreItem 实际呈现的时间......

【问题讨论】:

    标签: javascript react-native


    【解决方案1】:
      return this.props.getData ? list : null;
    

    在这里,你可以尝试像这样渲染ActivityIndi​​cator:

      return this.props.getData ? list : <View><ActivityIndicator /></View>;
    

    如果您的 ActivitiyIndi​​cator 没有显示在中心,您可以在包含的 View 中添加一些样式。


    稍后添加:

    我看到的一种常见做法是,您在从后端获取数据时将加载状态设置为 true,并在完成后将其设置为 false。可以参考加载状态显示ActivityIndi​​cator。

    此外,为了使您的应用程序的用户体验更佳,值得您花时间考虑在以下场景中要显示的内容:

    • 加载数据之前。
    • 加载数据时。
    • 加载数据后 -- 数据为空。
    • 加载数据后 -- 数据太多
    • 加载数据后 - 获取失败。

    【讨论】:

    • this.props.getData 总是返回 true,只要 OneFeed 通过 props 传递函数。并且做this.state.loading ? list : &lt;... /&gt; 会出现不稳定的行为,因为屏幕在滚动时一直是loading
    • 在这种情况下,您可以设置一个新状态,如 isLoading,并在加载数据时将其设置为 true,并在加载完成后将其设置为 false。
    • 好的,我通过显示登录页面解决了这个问题,直到所有内容都加载完毕
    猜你喜欢
    • 2021-08-31
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 2021-03-25
    • 2019-10-18
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多