- 博客(28)
- 收藏
- 关注
原创 关于js中()圆括号的作用
()操作符有两种用法,一是作为圆括号运算符,提升括号内表达式的优先级;二是作为函数调用操作符,用于执行在()操作符之前指向的函数名
2022-11-25 10:11:34
655
原创 react-router-dom v6 重定向
官网搬运:React Router | Migrating from @reach/router[这里是图片001]https://reactrouter.com/docs/en/v6/upgrading/reach#what-about-clicking-links-that-arent-updated。
2022-10-20 14:56:53
406
原创 # React Router 6 快速上手
2. 与React Router 5.x 版本相比,改变了什么? 1. 内置组件的变化:移除`` ,新增 ``等。 2. 语法的变化:`component={About}` 变为 `element={}`等。 5. 新增多个hook:`useParams`、`useNavigate`、`useMatch`等。 7. 官方明确推荐函数式组件了!!!
2022-10-19 16:44:15
188
原创 redux持久化
如果正在使用react,请使用PersistGate包装根组件。这将延迟应用程序UI的呈现,直到您的持久状态被检索并保存到redux。注意PersistGate加载道具可以为空,也可以为任何react实例,例如loading={< loading />}基本用法包括将persistReducer和persistStore添加到设置中。每个应用都需要决定它们想要“合并”的状态级别。请阅读状态协调器文档以获得更多信息。1.下载redux-persist结合react-redux使用。
2022-10-11 19:39:02
518
原创 promise方法
all():传入promise对象组成的数组,返回一个promise实例,根据数组中的promise执行的状态结果,执行resolve或reject回调(全fulfilled 执行res,全rejected执行rej)race():传入promise数组,谁执行的最快,则返回谁的状态(fulfilled 或 rejected),执行对应的res或rej回调。后的 promise,并带有一个对象数组,每个对象表示对应的 promise 结果(以在then或者catch使用)。这避免了同样的语句需要在。
2022-10-10 18:42:53
171
原创 Promise链式调用
同步返回值的意思换句话说,如果 then 中的回调返回了一个 promise,那么 then 返回的 promise 会等待这个 promise 被 resolve 后再 resolve。3.resolve()它的作用除了将当前的 promise 由 pending 变为 resolved,还会遍历之前通过 then 给这个 promise 注册的所有回调,将它们依次放入微任务队列中,,由 resolve 将注册的回调放入微任务队列,由事件循环将其取出并执行。还有一个关于执行顺序的题目解析,共同学习。
2022-10-10 15:30:06
731
转载 useMemo和useCallback
用于缓存数据,优化性能;两者接收的参数都是一样的,第一个参数表示一个回调函数,第二个表示依赖的数据。useMemo和useCallback都是reactHook提供的两个。
2022-10-02 16:25:44
85
转载 node服务器搭建流程
依赖项是这个项目关联的模块,把模块关联到依赖项中之后,即使把模块删掉,也可以找回。上述步骤执行完之后会在终端对应的目录下生成一个package.json文件,json文件中有一个依赖项 dependencies。将需要显示在网站上的网页放入punlic目录下,域名没有参数时,默认为index.html 文件。4,新建一个js文件,文件名要于entry point设置的名字一样,默认为index.js。name : 项目名称(小括号中是默认的,文件夹名相同,不能包含大写字母或者汉字)Is this ok?
2022-09-23 14:24:19
2265
原创 虚拟DOM中key和index(需了解diffing算法的逻辑原理)
在页面更新时,会将虚拟DOM的key作为依据进行数据的对比,如果应index作为key,则可能会引发不必要的DOM更新,影响渲染效率;若页面包含输入类的DOM,并且进行了逆序的增删操作,还会造成错误的DOM更新。而使用唯一的标识作为key,则不会出现类似的情况。
2022-08-19 16:57:11
99
转载 VSCode中如何开发uni-app?
因为uni-app项目跟其他前端项目差异较大,我还是比较推荐为uni-app项目单独做个VSCode工作区。对于VSCode工作区概念VSCode工作区指南:回归轻量,打造全能编辑器。或者说,为每个项目单独做一个。...
2022-08-15 10:45:51
18631
2
原创 DIFF算法原理
diff算法就是进行虚拟节点对比,并返回一个patch对象,用来存储两个节点不同的地方,最后用patch记录的消息去局部更新Dom。简单来说Diff算法就是在虚拟DOM树从上至下进行同层比对,如果上层已经不同了,那么下面的DOM全部重新渲染。这样的好处是算法简单,减少比对次数,加快算法完成速度。...
2022-08-09 19:06:53
4372
原创 对虚拟DOM的理解
本质上讲,虚拟dom是一个js对象,将页面的状态抽象js对象形式,配合不同渲染工具,可跨平台渲染;通过时间触发,将多次dom页面的修改结果一次性更新,减少渲染次数,减少重绘重排,提高性能。。虚拟dom是对dom的抽象,涉及最初目的是为了更好的跨平台,如node.js没有dom,要实现ssr(服务端渲染,在ajax出现之前,都是ssr),就是接住虚拟dom。...
2022-08-09 18:43:01
269
原创 MVC、MVVM、MVP
MVC 中的Controller 只知道 Model 的接口,因此它没有办法控制 View 层的更新,MVP 模式中,View 层的接口暴露给了 Presenter 因此可以在 Presenter 中将 Model 的变化和 View 的变化绑定在一起,以此来实现 View 和 Model 的同步更新。V为view,是视图层,负责显示数据;C是controller,是view和model层之间的枢纽,负责响应操作,当view需要数据,通知model拉取,当model拉取到数据,通知view显示。...
2022-08-09 18:18:24
798
原创 使用Object.defineProperty()进行数据劫持的缺点
对于数组的大部分操作无法拦截,对于通过下标方式修改数组或对象都不能触发重新渲染,只是vue通过重写函数解决了这个问题。而vue3不会有这样的问题,proxy可以监听到任何形式的数据改变,但是时es6的语法,会有兼容问题。...
2022-08-03 22:24:05
770
原创 VUE面试--基本原理
vue实例创建时,vue会遍历data中的属性,用obj.defineproperty或proxy将data属性转化为getter/setter,并且在内部追踪相关依赖,当其被修改或访问时就会通知变化;每一个组件有对应watcher实例,对属性记录依赖,之后当 依赖项setter被调用,就会让watcher重新计算,以此更新组件。...
2022-08-03 22:13:02
111
原创 JS call()、apply()、bind()方法区别
不同的是,call方法只需要将function所需的参数按顺序依次书写即可;而apply方法则需要将所有参数装成一个数组;call方法和apply方法都可以直接调用函数;而bind方法则会返回一个新的函数,需要定义一个变量接受,而后再调用。第一个参数thisArg都是指定的this对象参数,后面的参数则是function函数所需要用到的参数;三个方法都可以改变function函数的this指向;...
2022-07-30 15:48:39
126
转载 原型和原型链
一、前言在js中,原型和原型链是一个很重要的知识点,只有理解了它,我们才能更深刻的理解js,在这里,我们将分成几个部分来逐步讲解。二、构造函数构造函数和普通函数本质上没什么区别,只不过使用了new关键字创建对象的函数,被叫做了构造函数。构造函数的首字母一般是大写,用以区分普通函数,当然不大写也不会有什么错误。function Person(name, age) { this.name = name; this.age = age; this.species =...
2022-05-07 16:44:32
56
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人