
获得徽章 14
- 你能想象到一个穿着卡通裙,扎着小辫子,白白净净,可可爱爱的小姑娘,面色狰狞的朝着我边跑边喊“卧槽”的场景吗?
直到水桶滚到我的脚下,我才反应过来,随之小姑娘也已经跑到我跟前。
我呆呆地看看脚下的水桶,又看看了眼前的小姑娘。
小姑娘到我身前,很有礼貌地朝我打了声招呼,甜甜的喊了声“叔叔好。”
我一时之间有点恍惚,是不是我刚才出现了幻觉。
看着眼前对着水桶一筹莫展的小姑娘,我顿时又起了爱美之心。
做作的说了声让我来,然后单手拎起水桶,朝着她的小推车走去。
小姑娘跟在我身旁,一脸崇拜的说了声:“牛逼!”
是的,这次我确定我没有幻听,她确实说了一声牛逼。
我觉得我的心情就像便秘的时候窜稀,不知是悲是喜了。
面无表情地将水桶放到她的小推车上,小姑娘很是开心,又甜甜的说了声:“谢谢叔叔!”
那笑容,又让我恍惚了一下。
我心想,这小姑娘虽然有些不拘小节,但仍是一个我见犹怜的小可爱。
但是!
小姑娘的下一句话让我彻底崩溃。
“牛逼叔叔,你好像有些智障,为什么刚才你不把小车推过去,而是要一路将水桶拎过来呢?”
你家人让你自己下来打水,实在是活该!!!展开等人赞过136 - 昨天在小区里遛弯,遇到一个大概五六岁的小姑娘在售水机前打水。
我四下瞅了瞅,周围没有其他人。
心想这家人也是真牛,让这么小的小姑娘来打水。
小姑娘拉了一个小推车,车上应该是两个10L的水桶。
我没有贸然上前,就在不远处看着小姑娘。
小姑娘很是熟练的将桶放在售水机的接水台上,然后掂着脚刷上卡,打水。
一套动作下来看得出来小姑娘应该是经常干这个。
其实这不是重点,我就是想看看这小姑娘是怎么把盛满水的水桶搬到推车上去。
我寻思着这么小的小姑娘,怎么可能能搬动这么沉的东西呢。
不一会儿,水接满了。
小姑娘又刷了一下卡,水就停了,然后拧上了盖子。
这个时候我已经准备好了,想着若是小姑娘弄不了,我就来个英雄救美,发挥一下我伟大的人格魅力。
结果这小姑娘的操作实在是让我目瞪口呆。
小姑娘将小推车推到售水机前,然后自己站到推车前面,背对着售水机。
半蹲下身来,让自己的肩膀与接水台平齐。
然后双手握住水桶头上的凸起,顺势将水桶放到了自己的肩膀上。
然后小姑娘转身,整个人蹲了下来,再用同样的方式将水桶放到小推车上。
整个过程行云流水,毫不费力。
真是聪明啊,我在一旁暗叹,心想这下没有我的用武之地了。
然后第二个水桶也是同样的操作。
接水,拧盖子,抗肩膀,放车上。
只不过这一次,小姑娘的判断有点失误,水桶的落点没找好,导致水桶侧歪,咣当一下就从小推车上掉了下来。
水桶就好巧不巧的朝着我的方向滚了过来。
我刚想站起来截住滚动的水桶,就听见不远处的小姑娘大喊了一声:“卧槽”,我当时就呆住了。展开等人赞过94 - #每天一个知识点#
React 组件中怎么做事件代理?它的原理是什么?
React基于Virtual DOM实现了一个SyntheticEvent层(合成事件层),定义的事件处理器会接收到一个合成事件对象的实例,它符合W3C标准,且与原生的浏览器事件拥有同样的接口,支持冒泡机制,所有的事件都自动绑定在最外层上。
在React底层,主要对合成事件做了两件事:
事件委派: React会把所有的事件绑定到结构的最外层,使用统一的事件监听器,这个事件监听器上维持了一个映射来保存所有组件内部事件监听和处理函数。
自动绑定: React组件中,每个方法的上下文都会指向该组件的实例,即自动绑定this为当前组件。展开赞过评论1 - #每天一个知识点#
React事件机制
什么是合成事件
React基于浏览器的事件机制实现了一套自身的事件机制,它符合W3C规范,包括事件触发、事件冒泡、事件捕获、事件合成和事件派发等
React事件的设计动机(作用):
在底层磨平不同浏览器的差异,React实现了统一的事件机制,我们不再需要处理浏览器事件机制方面的兼容问题,在上层面向开发者暴露稳定、统一的、与原生事件相同的事件接口
React把握了事件机制的主动权,实现了对所有事件的中心化管控
React引入事件池避免垃圾回收,在事件池中获取或释放事件对象,避免频繁的创建和销毁
React事件机制和原生DOM事件流有什么区别
虽然合成事件不是原生DOM事件,但它包含了原生DOM事件的引用,可以通过e.nativeEvent访问展开赞过评论1 - #每天一个知识点#
nextTick的实现
nextTick是Vue提供的一个全局API,是在下次DOM更新循环结束之后执行延迟回调,在修改数据之后使用$nextTick,则可以在回调中获取更新后的DOM;
Vue在更新DOM时是异步执行的。只要侦听到数据变化,Vue将开启1个队列,并缓冲在同一事件循环中发生的所有数据变更。如果同一个watcher被多次触发,只会被推入到队列中-次。这种在缓冲时去除重复数据对于避免不必要的计算和DOM操作是非常重要的。nextTick方法会在队列中加入一个回调函数,确保该函数在前面的dom操作完成后才调用;
比如,我在干什么的时候就会使用nextTick,传一个回调函数进去,在里面执行dom操作即可;
我也有简单了解nextTick实现,它会在callbacks里面加入我们传入的函数,然后用timerFunc异步方式调用它们,首选的异步方式会是Promise。这让我明白了为什么可以在nextTick中看到dom操作结果。展开评论点赞 - #每天一个知识点#
闭包的两大作用:保存/保护
闭包的概念
函数执行时形成的私有上下文EC(FN),正常情况下,代码执行完会出栈后释放;但是特殊情况下,如果当前私有上下文中的某个东西被上下文以外的事物占用了,则上下文不会出栈释放,从而形成不销毁的上下文。 函数执行函数执行过程中,会形成一个全新的私有上下文,可能会被释放,可能不会被释放,不论释放与否,他的作用是:
(1)保护:划分一个独立的代码执行区域,在这个区域中有自己私有变量存储的空间,保护自己的私有变量不受外界干扰(操作自己的私有变量和外界没有关系);
(2)保存:如果当前上下文不被释放【只要上下文中的某个东西被外部占用即可】,则存储的这些私有变量也不会被释放,可以供其下级上下文中调取使用,相当于把一些值保存起来了;
我们把函数执行形成私有上下文,来保护和保存私有变量机制称为闭包。展开赞过评论1