Reselect 为什么可以优化 React 项目性能?

Reselect是一个用于创建记忆化的选择器库,常与Redux配合使用,通过缓存计算结果来减少不必要的更新,提高React项目的性能。本文介绍了Reselect的基本原理,包括它的memoize函数和createSelectorAPI,探讨了如何自定义比较函数以优化性能,并指出在实际项目中处理变量查询型selector的挑战。最后,提到了结合高效缓存策略以平衡性能和内存占用的重要性。
摘要由CSDN通过智能技术生成

没接触过

Reselect 是一个用于创建记忆的“selector”函数的库。

通常与 Redux 一起使用,但也适用于任何普通的 JS 不可变数据场景

  • selector 可以计算衍生数据,它允许让 Redux 存储尽可能少的 state
  • selector 很高效,它只有在某个参数发生变化时才会进行重新计算
  • selector 是可组合的,它可以作为其他 selector 的入参

以上是来自官方的介绍,个人简单理解:

我们可以用它包装数据(如 Redux 的 state),并利用其缓存入参的能力减少不必要的更新,从而达到性能优化,一举多得。

来看个简单的用例感受一下魅力。

import { createSelector } from 'reselect'

const shopItemsSelector = state => state.shop.items
const taxPercentSelector = state => state.shop.taxPercent

const subtotalSelector = createSelector(shopItemsSelector,items => items.reduce((acc, item) => acc + item.value, 0)
)

const taxSelector = createSelector(subtotalSelector,taxPercentSelector,(subtotal, taxPercent) => subtotal * (taxPercent / 100)
)

export const totalSelector = createSelector(subtotalSelector,taxSelector,(subtotal, tax) => ({ total: subtotal + tax })
)

let exampleState = {shop: {taxPercent: 8,items: [{ name: 'apple', value: 1.20 },{ name: 'orange', value: 0.95 },]}
}

console.log(subtotalSelector(exampleState)) // 2.15
console.log(taxSelector(exampleState))// 0.172
console.log(totalSelector(exampleState))// { total: 2.322 } 

用过而已

如果你正在使用 reselect,并还没去深入了解过,建议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值