自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

li_Ryan的博客

杂项,有用到的拿去~用不到莫喷。

  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 redux重温笔记(四)

数据流严格的单向数据流是 Redux 架构的设计核心。这意味着应用中所有的数据都遵循相同的生命周期,这样可以让应用变得更加可预测且容易理解。同时也鼓励做数据范式化,这样可以避免使用多个且独立的无法相互引用的重复数据。Redux 应用中数据的生命周期遵循下面 4 个步骤 调用store.dispatch(action)。 Action就是一个描述“发生了什么”的普通对象。比如: { type: 'LIKE_ARTICLE', articleId: 42 } { type: ..

2021-05-18 17:21:10 159

原创 redux重温笔记(三)

StoreStore就是把reducers和action联系到一起的对象。Store 有以下职责:维持应用的 state; 提供getState()方法获取 state; 提供dispatch(action)方法更新 state; 通过subscribe(listener)注册监听器; 通过subscribe(listener)返回的函数注销监听器。再次强调一下Redux 应用只有一个单一的 store。当需要拆分数据处理逻辑时,你应该使用reducer 组合...

2021-05-17 17:27:47 139

原创 redux重温笔记(二)

ReducerReducers指定了应用状态的变化如何响应actions并发送到 store 的,记住 actions 只是描述了有事情发生了这一事实,并没有描述应用如何更新 state。reducer 就是一个纯函数,接收旧的 state 和 action,返回新的 state。(previousState, action) => newState永远不要在 reducer 里做这些操作:修改传入参数; 执行有副作用的操作,如 API 请求和路由跳转; 调用非纯...

2021-05-17 17:21:02 162

原创 redux重温笔记(一)

ActionAction是把数据从应用(译者注:这里之所以不叫 view 是因为这些数据有可能是服务器响应,用户输入或其它非 view 的数据 )传到 store 的有效载荷。它是 store 数据的唯一来源。一般来说你会通过store.dispatch()将 action 传到 store。{ type: ADD_TODO, text: 'Build my first Redux app'}Action 创建函数就是生成 action 的方法。“action” 和 “ac...

2021-05-17 16:36:10 121

原创 刀斩js中的async/await

异步操作是 JavaScript 编程的麻烦事,麻烦到一直有人提出各种各样的方案,试图解决这个问题。从最早的回调函数,到 Promise 对象,再到 Generator 函数,每次都有所改进,但又让人觉得不彻底。它们都有额外的复杂性,都需要理解抽象的底层运行机制。异步I/O不就是读取一个文件吗,干嘛要搞得这么复杂?异步编程的最高境界,就是根本不用关心它是不是异步。async 函数就是隧道尽头的亮光,很多人认为它是异步操作的终极解决方案。async函数async函数是使用async关键字声明

2021-03-28 16:39:13 210

原创 js迭代器Iterator和生成器Generator深入理解

什么是迭代器迭代器是一种特殊对象,它具有一些专门为迭代过程设计的专有接口,所有的迭代器对象都有一个next()方法,每次调用都返回一个结果对象,结果对象有两个属性:一个是value,表示下一个将要返回的值,另一个是done,它是一个布尔类型的值,当没有更多可返回数据时返回true。迭代器会保存一个内部指针,用来指向当前集合中值的位置,每调用一次next()方法,都会返回下一个可用值。如果在最后一个值返回后再调用next()方法,那么返回的对象中属性done的值为true,属性value则包涵迭代器最

2021-03-28 15:06:53 411

原创 js原型链避坑指南

认识原型对象和原型链在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象 Object和函数对象 Function。一般而言,通过 new Function 产生的对象是函数对象,其他对象都是普通对象。举例说明: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19..

2021-03-25 23:29:57 138

原创 一把搞通变量提升,闭包,this指向~

变量提升定义:变量提升是当栈内存作用域形成时,JS代码执行前,浏览器会将带有var, function关键字的变量提前进行声明 declare(值默认就是 undefined),定义 defined(就是赋值操作),这种预先处理的机制就叫做变量提升机制也叫预定义。词法作用域,不会被提升,只会在定义以后才有;同一作用域禁止重复声明。例: var a=1; let a=1; 报语法错误。const定义常量,在使用时必须初始化值,常量也不会被提升到做作用域顶部。const和let都是块级标识符。c

2021-03-25 20:53:33 113

转载 js执行机制分析

本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还不懂,可以揍我。不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定的几行代码,我们需要知道其输出内容和顺序。因为javascript是一门单线程语言,所以我们可以得出结论:javascript是按照语句出现的顺序执行的看到这里读者要打人了:我难道不知道js是一行一行执行的?还用你说?稍安勿躁,正因为js是一行一行执行的,所以我们以为js都是这样的:let a =

2021-03-25 10:39:28 76

原创 Promise剖析,撕烂了它

promise用法都知道,再简单介绍一下:Promise的构造函数接收一个参数,是函数,并且传入两个参数:resolve,reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。按照标准来讲,resolve是将Promise的状态置为fullfiled,reject是将Promise的状态置为rejected。var p = new Promise(function(resolve, reject){ //做一些异步操作 setTimeout(functi

2021-03-24 20:14:20 142

原创 react函数组件性能优化

简言一直以来,忙于项目,项目是真的繁琐,相信看到这篇文章得同学应该有相同的感触,(PS:项目害人呐,唯一能积累的可能就是业务场景了,搬砖搬砖,没完没了)。虽然一直再用react写各个模块,但仔细想想却没时间真正的去研究它。趁个空挡,开始研究一下吧。后续我也开始慢慢更新一些react相关得文章,感兴趣得同学可以关注一下。性能优化点性能优化是个老生常谈得问题,更多的方法论可以在具体学习,针对react得函数组件,应该和类组件想要优化得点一样吧减少重复得计算量 (某些复杂计算,可以避免就避免重

2021-03-18 19:32:13 417

转载 Object.defineProperty详解及理解

引用于MDN 文档Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。语法:Object.defineProperty(obj, prop, descriptor)参数obj要定义属性的对象。prop要定义或修改的属性的名称或Symbol。descriptor要定义或修改的属性描述符。备注:应当直接在Object构造器对象上调用此方法,而不是在任意一个Object类型的实例上调用在ES6中,由...

2021-03-17 11:10:40 1467

原创 对js函数柯里化的理解

维基百科:柯里化,英语:Currying,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。从字面意思就可以理解了,对应到js,我的理解就是将一个接受多个参数的函数,转化为接收一个参数,并且不改变输出结果的一种办法。我觉得这就是js的柯里化从字面上理解,看似挺好理解,上个例子:// 简单的相加函数var add = function (x,y) { return x + y}// 调用:add(1,

2021-03-16 16:36:50 164

原创 js定义函数时用 var a = function () {} 和 function a() {}的区别

根本原因: 变量定义提升,特殊点,function a(){}这个全局函数,也会提升,而且提升时就已经定义了a 的值,如果var 定义a,虽然a变量提升了,但也仅仅是定义了,还是空值简单的说 如果我们使用var a = function() { /* code */}; 这种方式, 编译后变量声明 a 会“被提前”了,但是他的赋值(也就是code)并不会被提前。就是说 a 只有在被调用时才被初始化。如果我们使用function a () { /* code*/}; ...

2021-03-16 10:14:46 981

原创 js内存回收机制以及避免内存泄漏

js中定义得变量,对象,函数,等都会占用内存,常见类型占用内存如下:bealoon占用4个bytesstring占用2个bytesnumber因为是64位标识符所以为8bytesnull不会占用内存特别指出:object得key值也会占用内存浏览器内存周期分为:内存分配 内存使用 内存释放js内存回收机制:1.引用计数:语言引擎有一张"引用表",保存了内存里面所有资源(通常是各种值)的引用次数。如果一个值的引用次数是0,就表示这个值不再用到了,因此可以将这块内存释放

2021-03-16 09:38:45 586

服务预约20220725问题(1).csv

服务预约20220725问题(1).csv

2022-07-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除