Reselect Redux 的选择器库开源项目

我要开发同款
匿名用户2018年06月22日
79阅读
开发技术JavaScriptTypeScript
所属分类选择器(Picker)、iOS代码库
授权协议MIT

作品详情

Reselect是一个Redux的选择器库,灵感来源于NuclearJS。

Selector可以计算衍生的数据,可以让Redux存储尽可能少的state。

Selector非常高效,除非某个参数发生变化,否则不会发生计算过程。

Selector是可组合的,它们可以输入、传递到其他的选择器。

示例:

import { createSelector } from 'reselect'const shopItemsSelector = state => state.shop.itemsconst taxPercentSelector = state => state.shop.taxPercentconst 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.15console.log(taxSelector(exampleState))      // 0.172console.log(totalSelector(exampleState))    // { total: 2.322 }
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论