【问题标题】:React Native text input is very slow to updateReact Native 文本输入更新很慢
【发布时间】:2018-10-24 17:51:33
【问题描述】:

我有一个适用于 iOS 和 Android 的聊天应用程序 - 带有消息列表和输入字段的基本布局,用于键入和发送消息。在输入了几十条消息后,打字变得非常慢。列表滚动仍然很流畅。

我检查了 iOS 内存工具,它报告说我没有内存泄漏。在 Android systrace 上,它显示deliverInputEvent 占用了 300 毫秒。

我如何弄清楚是什么让deliverInputEvent 花了这么长时间?

【问题讨论】:

  • 也许您可以分享一些您在 TextInput.onChangeText 中所做的代码...
  • onInputTextChanged = text => { this.setState({ text }); this.updateUserTagDebounced(); } 主要是设置状态。 debounced 函数是异步的,但即使删除它,问题仍然存在。
  • 只是验证一下,如果你注释掉 setState 行,问题就消失了吗? setState 导致组件重新渲染。所以也许有很多不需要重新渲染的东西重新渲染?也许尝试在 shouldComponentUpdate() 中添加一个过滤器...
  • 还没试过。如果我没有 setState 则输入字段不会更新,因为我使用它来更新文本输入值。重新渲染会减慢 DeliverInputEvent 方法吗?我认为缓慢的重新渲染会显示在 Android systrace 中。

标签: android ios performance react-native performance-testing


【解决方案1】:

似乎是 React Native 中的一个错误: https://github.com/facebook/react-native/issues/19126

【讨论】:

【解决方案2】:

我有同样的应用程序和同样的问题。就我而言,开始输入时 TextInput 变慢。我注意到自动更正需要一些时间来建议键盘上的单词,所以我把它关掉了。现在效果更好了。我知道这不是最好的解决方案,但是...¯ \ _ (ツ) _ / ¯

autoCorrect={false}

【讨论】:

    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2019-06-03
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    相关资源
    最近更新 更多