【问题标题】:React Native - set content position instantly, avoid slow scrollReact Native - 立即设置内容位置,避免缓慢滚动
【发布时间】:2016-12-18 07:15:55
【问题描述】:

This question 指出在 ScrollView 上使用 scrollTo 时无法控制滚动速度。有没有替代scrollTo 的方法,它只是将内容立即设置到新位置(没有任何动画)?

我链接到的“你不能这样做”的答案可能涵盖了这一点,但不确定,因为我不知道将内容设置到新位置是否立即算作滚动。

我使用的是 ListView,但由于它是使用 ScrollView 构建的,我假设同样的问题适用于两者。

【问题讨论】:

  • 你的意思是没有动画吗? animated 标志应该可以完成工作 - .scrollTo({ y: 1000, animated: false }),但如果使用 ListViews,您想要滚动到的那部分中的内容可能尚未加载。
  • @MichaelRadionov 嗯,我确实尝试过animated: false,但它仍然可以流畅地滚动并保持相同的速度。
  • 啊,我有线索。我想知道是不是因为列表中的项目不会立即加载,所以它不是逐渐滚动,只是逐渐添加列表项。

标签: reactjs animation react-native scrollview


【解决方案1】:

正如Michael 提到的,有一个animated 标志可以设置为false,以避免滚动动画。我有这个,但认为它不起作用。

原来滚动很慢,因为 ListView 中的项目是逐渐加载的,所以即使每次添加的即时滚动仍然看起来像逐渐滚动。

为了解决这个问题,我将 ListView 的 pageSize 设置为 30(列表中的消息数)以包含在单个事件循环中加载 ListView 的所有项目,从而获得单个滚动跳转,而不是逐渐滚动.

<ListView dataSource={messagesDataSource}
          renderRow={this._renderMessage}
          pageSize={DEFAULT_NUM_MESSAGES} />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多