“ 上一章节说到了setState的使用和部分源码,这一章节继续上一章节的讲解。setState是同步还是异步的呢?可能你会觉得这个问题有点无聊,但是我们还是需要将他了解清楚。” ps:在这里我们所说的异步和你心中理解的异步不是相同的定义,在setState中的异步其实是批处理,本质上还是同步执行的,因此不要被误导了。当然如果你对setState方法的使用还有问题的话,请移至我上一篇文章中:React中setState的使用和源码分析
“ 很早之前看了React中封装setState方法的源码,趁着最近来写一下,帮助大家能更进一步的了解setState方法,并且也能避免在开发过程中出现无形的bug。” 1. setState的使用在讲解源码之前,我们首先需要先知道它的用法(如果你知道它的用法的话,那么是可以跳过这一部分的,直接到第二段中看源码的实现)。关于setState的用法可以分为三个部分讲解:(1)setState改变值之后会替换掉初始化的内容吗?答案是不会的。
“ 又到了和大家分享算法的时间了,今天涉及到的话题是和链表有关系的,如果不了解链表的同学可以去看看我之前的文章,今日分享的算法题是leetcode206反转链表。” 数据结构与算法之单向链表 1. 题目描述反转链表题目如下所示,其实就是将输入的链表进行一个反转,这也是算法中常考的一道题,小伙伴此时你想想如果你面试拿到这道题该如何思考和解决呢?反转链表题目描述图 2. 题解思路在这里我说一下自己的解题思路,当然如果你有更好的思路欢迎在下方
“ 在项目中使用node的时候,我们往往不会使用原生的,而是使用Express框架来更快的解决服务端的问题。其中我们最长听见和使用的便是中间件,今天就来带领大家更进一步的了解Express的中间件的原理,以及如何实现。” PS:测试接口可以使用Postman工具。 1. 什么是中间件简单的一句话概括中间件其实就是函数,在响应发送之前对请求进行一些操作。 引用网上说:一个请求发送到服务器后,它的生命周期是先收到request请求,然后服务
“ 在使用React时,我们能经常听见虚拟dom,那虚拟dom是什么?它的原理又是什么?我们该如何来实现一个简版的虚拟dom呢?” 1. 什么是虚拟dom其实虚拟dom不是什么何方神圣,它本质上就是js对象,该对象就是对dom的一种描述方式。换句话来说:js对象模拟dom结构,将dom的变化对比放到了js层来做。如果你读过源码的话,肯定觉得要想实现虚拟dom对象是很简单的一件事情。首先我们需要知道JSX是什么?它其实只是语法糖而已,ba
“ 昨天说了对象转基本类型的文章介绍之后,今天我们继续来探讨相关话题。” 在讲解之前大家需要记住一个规则: (1)如果一个操作数是字符串,另一个操作数是数值,在比较相等之前先将字符串转化为数值; (2)如果有其中一个操作数是布尔值,则在比较相等之前先将其转换为数值; (3)至于其中有一个操作数为对象时,有兴趣的小伙伴可以看看我之前的一篇关于对象类型转基础类型的文章。 对象转基本类型 1. [] == ![]结果是什么?首先先公布答案:t
“ 今天来讲解有趣的一篇文章,并且在面试中也会遇到,其实坑也是蛮多的,但是如果你真的理解了这篇文章,那么那些所谓的坑都是小意思,那么让我开始今天的分享吧。” 1. 转换类型是数字number类型先来看一下转换类型是number数字类型会执行以下的步骤: (1)如果是原始值(即一些代表原始数据类型的值,也叫基本数据类型),直接返回这个值; (2)如果是对象,调用valueOf(),如果得到结果是原始值,返回结果; (3)如果(2)不满足,
“ 很早之前就读了中间件相关的源码,最近终于找了一个时间来更新,今天涉及到的内容也是很精彩的,对中间件源码感兴趣的小伙伴也不要错过哟。” 在我工作项目中,涉及到了redux中间件的实现,在这里我就截取少部分代码给大家介绍源码解析,代码如下所示: 12345import { createStore, applyMiddleware, compose } from 'redux';import thu
“ 好久没有讲算法啦,今天晚上抽空继续开始我们的算法之旅,今天要讲解的算法题目也是常考的一道。” 1. 无重复字符的最长子串题目老规矩,先放题目,大家可以先自己思考一下,题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度,具体实例如下图所示:无重复字符的最长子串实例图 2. 无重复字符的最长子串思路这道题的思路我们需要用到滑窗的思路,其实滑窗用到的就是队列。首先我们应该定义一个变量为queue,它是一个空数组,其作用就是用
“ 在学习和工作中,显式的改变this指向也是常遇到的,那么如何显式的改变this指向呢?聪明的你一定猜到啦,肯定是调用bind、call、apply这三种方法来改变。但是今天我并不会介绍这三个方法的使用,而是手动封装它们,做到知其所以然。” 1. bind方法封装bind方法创建一个新的绑定函数,调用新绑定函数,会在指定的作用域中传入参数并执行。bind函数与call和apply函数不一样在于,它会返回一个新的绑定函数,当你再执行它的
And we should call every truth false which was not accompanied by at least one laugh