我有一个组件(表),其中包含许多行,其中包含数据编辑,掩码形式为contenteditable,可以选择所有字段并同时更改所有行。
在台式机上它运行得非常快,但在 iPhone 6 上我有不真实的滞后,Safari 每次操作都会挂起 20 秒。
我完成了提高 React 性能的建议:防止协调、纯组件等......
有没有办法提高性能?我是否有必要考虑在移动设备上进行功能更改以支持性能?
添加到上面的答案,您应该使用react-perf模块来准确验证任何更改是否确实带来了性能提升。
https://github.com/crysislinux/chrome-react-perf
使用此扩展程序可以准确查看当您进行有问题/缓慢的用户交互时,页面上的每个组件实际呈现的次数
暂时放置 componentWillUpdate 生命周期钩子,并比较上一个和下一个 props/states。有了这个,您将获得渲染背后的确切道具罪魁祸首。不必要的 prop 更改可能发生在以下情况:
const READ_ONLY_OBJECT = {}每次变量需要初始化时,可以通过使用 READ_ONLY_OBJECT 来避免这种情况。我们不想要渲染的原因可能有更多,但它的发生是因为 React 的工作方式。只要注意 props 不会发生不必要的改变即可。另外,不要进行不必要的 componentWillRecieveProps/shouldCompoentUpdate 检查,因为它会对性能产生负面影响。此外,在使用它们时,请尽可能使用层次较高的层级。
一些可以使用的技巧
此外,类似地,在 React 中尝试以批处理方式处理事件,以减少在 React 渲染和比较算法上花费的时间。尝试在 React 中加入 setStates 或在 redux 中加入 actions 来减少 React 脚本编写时间。
在实施输入控制时始终使用适当的节流/去抖技术,以获得即时响应。如果您的业务逻辑允许,您还可以使用不受控制的组件来立即响应。想法是当用户以任何方式键入或与页面交互时不要运行任何 JavaScript,否则他会注意到设备中的卡顿在计算能力方面特别糟糕。
您的操作处理程序不应太长。如果很长,请尝试使用 redux-actions 或仅使用 Promise 分块、异步地完成它们。
这个列表还有更多内容,但问题是,作为框架的 React 最初很容易开始工作,但迟早,任何中型 React 应用程序都会遇到这些性能问题,因为 React 的比较和渲染逻辑会产生问题在不良设备中会出现很多性能损失,一旦应用程序大小增加,唯一的选择就是尽快将反应性能工具纳入构建过程。这将使您验证和衡量您的改进。
| 归档时间: |
|
| 查看次数: |
3808 次 |
| 最近记录: |