首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

immutablejs 是如何优化我们代码

如果我项目真的很大呢?那么你可以考虑使用 immutable 库来帮你。immutablejs 是无数 immutable 库中一个。...immutablejs 是什么 使用 immutablejs 提供 API 操作数据,每一次操作都会返回一个新引用,效果类似 deep copy,但是性能更好。...这个时候,你整个 state tree 应该是 immutablejs 对象,不需要使用普通 JavaScript 对象,并且操作也需要使用 immutablejs 提供 API 来进行。...并且由于有了 immutablejs,我们可以很方便使用全等 === 判断。写 SCU 也方便多了。 ❝SCU 是 shouldComponentUpdate 缩写。 ❞ ?...通过我几年使用经验来看,使用类似 immutablejs 库,会使得性能有不稳定提升。并且由于多了一个库,调试成本或多或少有所增加,并且有一定理解和上手成本。

58310
您找到你想要的搜索结果了吗?
是的
没有找到

超性感React Hooks(九)useContext实践

5.合理处理组件状态,该状态仅在该组件使用,则无需定义在父级 组件拆分,是考验我们React水平重要标准,但这不是通过一篇两篇文章就能够马上掌握技能,因此多给自己一点耐心,多从实践中反复思考总结是非常好进步方式...但是由于我们实现效果相对简单,这个地方也只使用一次,因此我选择直接实现。如果放在大型项目中,即使实现比较简单,也应该封装成为一个组件,以供其他页面复用。...经过分析发现,只有首页和热门未读标记数字,需要放在Provider中来处理。页面组件App和设置组件Setting都会使用到它们。...其他组件状态都仅仅只是当前组件自己使用,因此就在各自组件里维护就行了。 理清了这些思路,实现起来将会非常简单。 4 创建顶层组件Provider,该组件仅仅只维护两个未读数据。...,不过需要使用相同处理方式需求很多 ) } 这样,一个看上去比较复杂案例,就简单实现了。

1.3K20

9. 精读《Immutable 结构共享》

其原理是,使用二叉树,将所有值按照顺序,从左到右存放于叶子节点,当需要更新数据时,只将其更新路径上节点生成新对象,没有改变节点继续共用。...Hash maps trie Immutablejs 对于 Map,使用了这种方式优化,并且通过树宽与树高压缩,形成了文中例图中效果(10010 10000 聚合成了一个节点,并且移除了同级空节点...因此虽然 Map 性能不错,但无法胜任 Object.assign 或 immutablejs 库对 redux 支持。...如何你对原理不是很关心,那拿走这个结论也不错:在大部分情况可以使用 Object.assign 代替 Immutablejs,只要你不怕深度赋值麻烦语法;其效果与 Immutablejs 一模一样,唯一...,在数据量巨大字段上,可以使用 Immutablejs 代替以提高性能。

29420

精读《React 多态性》-文章底部有惊喜

读完文章才发现,文章标题改为 Redux 多态性更妥当,因为整篇文章都在说 Redux,而 Redux 使用场景不局限于 React。...所以笔者更推荐使用比如 immutable-js 这种库操作 immutable 对象,而不是 Object.assign,因为封装库内部是可能通过统一对象初始化方式利用 js 引擎进行优化。...笔者以前也经历过从 Object.assign 到 Immutablejs 库,最后又回到解构新语法经历,觉得在层级不深情况下解构语法可以代替 Immutablejs 库。...通过最近两篇精读分析,我们需要重新思考这样做带来优缺点,因为在 js 环境中,Object.assign 优化效率比 Immutablejs 库更低。...最后,也完全没必要现在就开始重构,因为这只是 js 运行环境中很小一部分影响因素,比如为了引入 Immutablejs 让你网络延时增加了 100%?所以仅在有必要时候优化它。

32020

React-Hooks-useContext

useContext 让您更轻松地使用这种全局数据。使用 useContext 需要两个步骤:创建上下文:首先,您需要使用 React.createContext 创建一个上下文对象。...这个上下文对象充当数据容器,然后可以通过提供者(Provider)来共享数据。提供者和消费者:在某个父组件中,使用 Provider 来提供上下文值。...然后,在任何需要访问上下文数据后代组件中,使用 useContext 钩子来获取这些数据。useContext 接受上下文对象作为参数,并返回当前上下文值。...举例来说,假设您有一个主题上下文,用于存储应用程序主题信息,您可以使用 useContext 在任何组件中访问主题数据,而不必在每个组件中手动传递主题作为 props。...useContext 就可以直接将生产者数据进行绑定然后获取到,使用起来非常方便。

15630

精读《Records & Tuples 提案》

immutablejs、immer 等库已经让 js 具备了 immutable 编程可能性,但还存在一些无解问题,即 “怎么保证一个对象真的不可变”。 如果不是拍胸脯担保,现在还真没别的办法。...但现阶段我们没有任何处理办法,如果不能接受完全使用 Immutablejs 定义对象,就只能摆胸脯保证自己变更一定是 immutable ,这就是 js 不可变编程被许多聪明人吐槽原因,觉得在不支持...,同时不需要牺牲性能与内存,它使用起来没有 mutable 模式方便,但它永远不会出现预料外情况,这对打造稳定复杂应用至关重要,甚至比便捷性更加重要。...由于最大程度保证了与普通对象与数组处理、API 一致性,所以开发者上手应该会比较容易。 为什么不像 Immutablejs 一样使用 .get .set 方法操作?...总结 如果这个提案与嵌套更新提案一起通过,在 js 使用 immutable 就得到了语言层面的保障,包括 Immutablejs、immerjs 在内库是真的可以下岗啦。

1.3K20

React Hooks实战:从useState到useContext深度解析

深入理解useState工作原理,状态更新异步性及其对性能影响。状态更新是异步,这意味着在同一个事件循环中多次调用 setCount,React只会使用最后一次值。...useContext:共享状态上下文解决方案简介useContext用于跨组件传递数据,无需显式传递props。...'Dark' : 'Light'} );}深入理解使用 useContext组件会在提供者(Provider)更新时重新渲染,即使该组件其他状态没有变化。...useState与useContext组合应用结合 useState 和useContext,我们可以创建一个带有主题切换功能计数器应用:import React, { createContext,...useState 管理主题状态,Counter 组件通过 useContext 订阅主题,同时使用 useState 管理计数器状态。

14700

createContext & useContext 上下文 跨组件透传与性能优化篇

‍createContext‍‍‍ createContext api 可以创建一个 React 上下文对象,如果使用了这个上下文对象中Provider组件,就可以拿到上下文中提供数据或者其它信息...使用方式: const defaultValue = {} const MyContext = React.createContext(defaultValue) 如果要使用创建上下文,需要通过 Context...如果匹配不到最新 Provider 就会使用默认值,默认值一般只有在对组件进行单元测试(组件并未嵌入到父组件中)时候比较有用。 ‍ ‍...使用useContext获取上下文 通过 createContext 创建出来上下文对象,在子组件中可以通过 useContext 获取 Provider 提供内容 const { fn, a, b...使用useMemo方式来解决上面state透传性能问题 使用 useMemo 优化子组件渲染 import React, { useContext, useMemo } from 'react'; import

1.7K20

useContext

Context与Reducer Context是React提供一种跨组件通信方案,useContext与useReducer是在React 16.8之后提供Hooks API,我们可以通过useContext...当然在这里我们还是要额外讨论下是不是需要使用Context,使用Context可能会带来一些性能问题,因为当Context数据更新时,会导致所有消费Context组件以及子组件树中所有组件都发生re-render...也就是说,我们可以使用useContext与useReducer来实现一个轻量级redux。...,对于这个问题我们也有一定优化策略: 可以完成或者直接使用类似于useContextSelector代替useContext来尽量避免不必要re-render,这方面在Redux中使用还是比较多。...此外,虽然我们可以直接使用Context与Reducer来完成基本状态管理,我们依然也有着必须使用redux理由: redux拥有useSelector这个Hooks来精确定位组件中状态变量,来实现按需更新

93410

快速上手三大基础 React Hooks

类似但又有所区别 useContext 监听 provider 更新变化 useState useState 允许我们在函数式组件中维护 state,传统做法需要使用类组件。...useContext 最大改变是可以在使用 Consumer 时候不必在包裹 Children 了,比方说我们先创建一个上下文,这个上下文里头有一个名为 username state,以及一个修改...使用上下文 上下文定义完毕后,我们再来看使用 useContext 和不使用 useContext 区别是啥?...useContext: 只需要引入 UserContext,使用 useContext 方法即可: 1import React, { useContext } from "react"; // 1...然后引入 UserProvider 以及上下文 UserContext 再需要使用组件中调用 useContext 方法获取 state 当然前提是要在父组件中使用 UserProvider 嵌套主

1.5K40
领券