
获得徽章 17
- #知识点记录# Object.is 方法
有一个特殊的内建方法 Object.is,它类似于 === 一样对值进行比较,但它对于两种边缘情况更可靠:
1. 它适用于 NaN:Object.is(NaN,NaN)=== true,这是件好事。
2. 值 0 和 -0 是不同的:Object.is(0,-0)=== false,从技术上讲这是对的,因为在内部,数字的符号位可能会不同,即使其他所有位均为零。
3. 在所有其他情况下,Object.is(a,b) 与 a === b 相同。
这种比较方式经常被用在 JavaScript 规范中。当内部算法需要比较两个值是否完全相同时,它使用 Object.is(内部称为 SameValue)。展开评论点赞 - #知识点记录# 记录一个 <a> 标签中使用 target="_blank" 之后出现的关于 rel='noopener noreferrer' 的安全问题。赞过评论1
- #知识点记录# 有人说 React Hooks 会取代 Redux,我不这么认为。我认为 React Hook 只是提供了一个新的让你能够更好地组织代码和沉淀可复用逻辑的一种方式。如果你在写 class 组件的时候决定使用了 Redux,那么 Hooks 可能会使你能够写出更高内聚的组件。React Hooks 并不会取代 Redux,因为他们所解决的并不是同一个问题。
相反,如果我们觉得 Hooks 的出现,使我们能抛弃 Redux,那你可能本就不需要 Redux。不同的工具仅是工具而已,不要为了追求新技术而不考虑实际场景和需求。例如,在使用 Redux 之前,我们应该问问自己“我们需要哪种方式管理状态?Redux 在我这个项目上是否合适,是否大材小用?是否该用 Hooks,还是继续使用类组件?如果我使用 Redux 和 React Hooks(或者 MobX 及其他),我该怎么利用好这些技术的优势进而实现 1+1 > 2 的效果。”
几篇好文章:
1. Clean Up Redux Code with React-Redux Hooks:medium.com
2. Stop Asking if React Hooks Replace Redux:medium.com
3. 别再问 React Hooks 能否代替 Redux 了:www.mengfansheng.com
4. React-Redux Hooks:react-redux.js.org
5. You Might Not Need Redux:medium.com
展开赞过评论1 - #知识点记录# 函数声明和函数的词法环境
1. 一个函数其实也是一个值,就像变量一样。不同之处在于函数声明的初始化会被立即完成。当创建了一个词法环境(Lexical Environment)时,函数声明会立即变为即用型函数(不像 let 那样直到声明处才可用)。这就是为什么我们可以在(函数声明)的定义之前调用函数声明。
2. 在一个函数运行时,在调用刚开始时,会自动创建一个新的词法环境以存储这个调用的局部变量和参数。
3. 这里注意:函数的词法环境是在该函数被调用时,该函数执行之初才创建的,里面存储的是这个函数调用中的局部变量和参数。
本知识点是 JavaScript 闭包问题的深入理解。展开评论点赞 - #知识点记录# React 中的 setState 同步异步的总结:
1. setState 只在合成事件和钩子函数中是“异步”的,在原生事件和 setTimeout 中都是同步的。
2. setState 的“异步”并不是说内部由异步代码实现,其实本身执行的过程和代码都是同步的,只是合成事件和钩子函数的调用顺序在更新之前,导致在合成事件和钩子函数中没法立马拿到更新后的值,形式了所谓的“异步”,当然可以通过第二个参数 setState(partialState, callback) 中的 callback 拿到更新后的结果。
3. setState 的批量更新优化也是建立在“异步”(合成事件、钩子函数)之上的,在原生事件和 setTimeout 中不会批量更新,在“异步”中如果对同一个值进行多次 setState ,setState 的批量更新策略会对其进行覆盖,取最后一次的执行,如果是同时 setState 多个不同的值,在更新时会对其进行合并批量更新。展开等人赞过25 - #知识点记录# state 和 props 有什么区别?
props(“properties” 的缩写)和 state 都是普通的 JavaScript 对象。它们都是用来保存信息的,这些信息可以控制组件的渲染输出,而它们的几个重要的不同点就是:
props 是传递给组件的(类似于函数的形参),而 state 是在组件内被组件自己管理的(类似于在一个函数内声明的变量)。
props 是不可修改的,所有 React 组件都必须像纯函数一样保护它们的 props 不被更改。 由于 props 是传入的,并且它们不能更改,因此我们可以将任何仅使用 props 的 React 组件视为 pureComponent,也就是说,在相同的输入下,它将始终呈现相同的输出。
state 是在组件中创建的,一般在 constructor 中初始化 state。state 是多变的、可以修改,一般通过 setState 被修改,并且一般是异步更新的。展开等人赞过14