Skip to main content
因纽特猎人Blog

因纽特猎人Blog

React 渲染优化:提升性能的实用技巧

最近参加了一些技术面试,其中不少聊到了React渲染优化的问题。这个话题很值得汇总一下,以便更系统的理解React的渲染机制和优化途径。
在React应用中,随着组件数量和复杂度的增加,渲染性能导致的问题可能会逐渐地凸显出来。主要的现象是页面出现卡顿,影响用户体验。下面我来介绍一下React中常见的渲染优化方法。

组件级别的优化方法

useMemo

useMemo是一个React Hook,用于缓存计算结果,避免在每次渲染时重复执行高开销的计算。
假设我们有一个计算结果的函数,它执行大量复杂的计算:


因纽特猎人About 3 minReact
git 经验谈(三):团队分支管理

这篇文章是 git 系列第三篇,想介绍一下团队分支的管理。在我们的开发工作中,为了对流程进行更好的管理,更好地交付产品,应该充分地利用分支这个功能。这里我想介绍一下自己认为比较完备的、通用的 git 分支管理策略。开始之前,要先说明一下我认为的“通用”是针对什么样的开发流程的,它的特点如下:

  • 有固定的迭代周期,一般是两周。
  • 每个迭代结束后进行一次产品发布。迭代周期中不发布产品,除非是 hotfix / 紧急问题。
  • 产品只有一个主版本。大多数基于 web 的产品都是这样的,不符合这个条件的产品一般是针对不同客户、国家等条件同时维护着多个正式版本。

因纽特猎人About 4 mingit项目管理版本管理
git 经验谈(二):可视化辅助工具

这篇文章是 git 系列第二篇,想介绍一下结合可视化工具使用 git 的经验。可视化工具多种多样,我自己常用的是 Github Desktop,文章中也会介绍一下 Sourcetree

用命令行还是可视化辅助工具?

命令行是 git 原生的使用方式,所以我们学习 git 时要通过命令行来理解 git 工作的方式。在使用可视化工具时,一定要清楚工具中所做的操作实际上是运行了哪些命令。建议使用 Sourcetree 的同学留意一下 "Always display full console output" 这个选项(在 Tools -> Options -> General -> Repo Settings 选项里),开启它可以在每次执行 git 操作时展示对应的命令。使用时如下图:


因纽特猎人About 3 mingit项目管理版本管理
git 经验谈(一):认识 git 的结构

最近想写一篇 git 的向导,由于 git 的使用方式非常灵活,每个人对 git 也有不同的使用偏好,所以写一下自己的经验还是很值得的。另外,现在总结一下使用经验,今后开展项目可以做到有备无患。根据我的总结,git 还是有不少东西值得写的,所以想把我写的东西分成几块,有个前后顺序。这是第一篇,介绍一下基本的入门知识,再讲讲 git 的整体结构是什么样的。Let's go!

什么是 git

git 是一个用于软件开发的代码 版本控制系统。它有以下特点:


因纽特猎人About 6 mingit项目管理版本管理
一个使用index作为虚拟DOM的key而导致的问题

我之前遇到过一个设计师开的bug,当用户在一个列表里添加了一行记录时,界面上的 CheckBox 异常地执行了一个动画效果。接到这个bug时第一反应是看看 CheckBox 对应的布尔值有没有发生变化,确认没有之后,我觉得这需要调查一下控件CSS的实现逻辑了,所以这个bug就被我放在一边了,因为没有影响到数据,被认为是低优先级的问题。直到后来有机会去处理手上残留的bug,才再次尝试解决。

问题描述

我用一个例子去描述当时我遇到的问题。假设我们用一个列表去实现某个业务上的功能,列表的每一行最左面是个 CheckBox,右面有一些文本信息。列表还支持增加行,按一下按钮(下图中的 Add to top),列表的最上方会加上一行。界面像是下面这样(暂时忽略那个Reverse按钮)。


因纽特猎人About 5 minReactVue虚拟DOMdata driven