setState 是同步还是异步
以下内容均基于 16.8.6 版本。
setState
是同步还是异步,这个问题很多人讨论过,各种说法都有,面试时也经常会问到,那它到底是同步还是异步呢?
我认为,它既是同步的,也是异步的。
react 源码中的 findHighestPriorityRoot 方法
在看源码时,可以看到有这么一个方法,从函数名来看,是「找到优先级最高的 root
」,但每个应用只有一个 root
,那为什么还要去「找」呢?
因为 react
支持多个实例,即支持调用多次 ReactDOM.render
。如果他们同时发生更新,也要有个先后关系,这个方法,就是用来从多个实例对应的 root
中,找出最先进行更新的那个 root
。
React 源码中的位运算
看 react
源码过程中,发现这样的代码
1 | const NoContext = /* */ 0b000000; |
~
、|
和 &
都是「位运算操作符」,平常写代码很少会用到,导致完全不理解这些运算符有什么用,react
源码中这些代码到底是什么意思呢?
nodejs 中的 Cache-Control
我一直对前端需要「熟悉」浏览器缓存是持疑问态度的,因为前端无法控制缓存,即无法通过代码或者某种方式来指定某些资源是否需要缓存。
举个例子,我们的 index.html
文件中引入了 bundle.js
这个文件,我们希望在每次刷新页面时,都不要使用缓存,每次都去服务器获取最新的 bundle.js
文件。
要实现这个需求,只从前端的角度来思考,怎么做?
或许有人会说 meta
标签支持指定 Cache-Control
,但这是针对全站资源,如果只是针对特定的资源如 bundle.js
获取最新的,其他资源照样使用缓存。
似乎是无法实现的。那什么角色应该了解这些内容呢?
Three.js 渲染自定义模型
Three.js
虽然内置了一些模型,但在实际业务中往往需要导入外部模型,导入的模型可以视为自定义模型。
首先要知道的是模型本质上来说是「三维坐标的集合」,最简单的一个模型可以用三个坐标和连接这三个坐标的「面」来表示。
怎么简单地在 canvas 中完成旋转
手上接到一个需求,将多种图片经过放大、旋转后绘制在一张 canvas
上,放大都还好理解,但旋转真的是废头发。
babel-preset-es2015 详解
babel-preset-es2015
是能将 es2015
新特性转换成 es3
的 babel plugin
的集合,这些集合到底包含了哪些插件呢,这篇博客会一一列出。
antd 自定义表单的问题 - 2
前面提到,「基本信息」包含姓名、出生年月、性别、城市以及邮箱共 5 个输入项。而其中性别、省市与邮箱封装为了单独的组件,因为这类组件包含特有的数据或者逻辑。
- 性别选择,因为有性别对应的 value。当然也可以将性别数据作为常量引入。
- 省市选择,包含了省市信息。
- 邮箱,有补全邮箱后缀等逻辑。
antd
官网中「自定义表单组件」就是一个有「特有逻辑」的组件,它同时包含两个字段。
python 按顺序合并 ts 文件
cctalk 缓存视频后,实际缓存的是视频切片并加密的 ts 文件,将视频片段解密后,需要解决的问题就是如何合并视频片段。