瓶子君
瓶子君
在React中,**如果是由React引发的事件处理(比如通过onClick引发的事件处理),调用setState不会同步更新this.state,除此之外的setState调用会同步执行this.state** 。所谓“除此之外”,指的是绕过React通过addEventListener直接添加的事件处理函数,还有通过setTimeout/setInterval产生的异步调用。 **原因:** 在React的setState函数实现中,会根据一个变量isBatchingUpdates判断是直接更新this.state还是放到队列中回头再说,而isBatchingUpdates默认是false,也就表示setState会同步更新this.state,但是,**有一个函数batchedUpdates,这个函数会把isBatchingUpdates修改为true,而当React在调用事件处理函数之前就会调用这个batchedUpdates,造成的后果,就是由React控制的事件处理过程setState不会同步更新this.state**。 **注意:** setState的“异步”并不是说内部由异步代码实现,其实本身执行的过程和代码都是同步的,只是合成事件和钩子函数的调用顺序在更新之前,导致在合成事件和钩子函数中没法立马拿到更新后的值,形式了所谓的“异步”,当然可以通过第二个参数 setState(partialState, callback) 中的callback拿到更新后的结果。 详细请看 [深入 setState 机制](https://github.com/LuNaHaiJiao/blog/issues/26)
#### 1. npm 模块安装机制: - 发出`npm install`命令 - 查询node_modules目录之中是否已经存在指定模块 - 若存在,不再重新安装 - 若不存在 - npm 向 registry 查询模块压缩包的网址 - 下载压缩包,存放在根目录下的`.npm`目录里 - 解压压缩包到当前项目的`node_modules`目录 #### 2. npm 实现原理 输入 npm install 命令并敲下回车后,会经历如下几个阶段(以...
## 公司名称 深圳壹账通-平安集团 ## 工作地点 上海 ## 薪资范围 面议 ## 岗位级别 中级 / 高级 / 资深 ## 工作职责 1. 参与汽车后市场电商平台Web/H5产品设计和开发工作; 2. 负责系统运行的日常维护,响应业务需求变化,迭代产品,确保产品按时按质量交付; ## 任职资格 1. 精通Html5, CSS3, Javascript , 2年以上前端开发经验,...