Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >重选回忆录忽略不相关的更新

重选回忆录忽略不相关的更新
EN

Stack Overflow用户
提问于 2016-12-22 07:28:05
回答 2查看 958关注 0票数 2

按照重新选择的文档上的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { createSelector } from 'reselect'

const shopItemsSelector = state => state.shop.items

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

在一个典型的redux应用程序中,如果用户更新了subtotalSelector,即使这对结果没有影响,item.name也会重新计算。有什么办法可以避免这种情况吗?

EN

回答 2

Stack Overflow用户

发布于 2016-12-22 18:31:58

有两种解决办法:

  1. 甭管他们。除非您有大量的项,否则浏览器的计算能力足以处理重计算。
  2. 将价格与项目对象分开。也就是说,您有state.shop.items.itemNames(包含id名称对)和state.shop.items.itemValues(包含id值对)。然后,只有itemValues传递给选择器。
票数 1
EN

Stack Overflow用户

发布于 2017-05-24 16:35:36

我有一个类似的问题,我已经找到了一种黑客绕过它。

我有一组复杂的过滤器,还有大量的项目需要过滤。过滤状态的一部分包括显示状态。我想忽略显示状态的变化,这样我就不会一直过滤一个庞大的列表。这是一个简单的解决方案:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const getFilters = createSelector(
    state => state.filters,
    filters => {
        const filtersWithoutDisplay = {};
        const ignoreObj = { collapsed: null };
        for (let filterGroup in filters) {
            filtersWithoutDisplay[filterGroup] = Object.assign({}, filters[filterGroup], ignoreObj);
        }
        // We create a new object every time, so this cannot be memoized properly unless we stringify.
        return JSON.stringify(filtersWithoutDisplay);
    }
);

它返回一个必须被解析的JSON字符串,但是它是一个原语,因此作为另一个选择器的输入,如果实际的内容不改变,它不会触发recomputation。这是一次黑客攻击。

您还可以在选择器函数之外定义一个对象,并且始终保持相同的引用,根据相同的模式更改内部,然后通过引入createSelectorCreator使用自定义的深度相等检查,如这里所解释的那样。这可能是一个更好的方法,但正如它所说:

始终检查替代equalityCheck函数或状态更新函数中的深度相等检查的成本不大于每次重新计算的成本。

这也适用于JSON.stringify黑客。我不会为大名单这么做,但是为了过滤器,当然。

在我的情况下,重构我的状态可能更好,因为筛选值可能是与筛选器显示设置不同的问题,而且这可能不是我唯一希望它们分开的时候。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41286546

复制
相关文章
woocommerce如何隐藏SKU
  有时我们不想在woocommerce网站前台显示SKU,如下图所示,因为sku一多整个排版可能会乱,那么要如何隐藏sku呢?随ytkah一起来看看
ytkah
2019/12/20
2.2K0
woocommerce如何隐藏SKU
woocommerce如何隐藏/显示product meta
  前面我们说了woocommerce如何隐藏SKU,那如果不想显示产品分类category和标签tag呢?我们知道SKU, Category list 和 Tag list在woocommerce产品页中统称为产品product meta,下图红框所示。1、如果想全部隐藏这些meta很简单,在当前主题function.php文件中加入下面的代码即可
ytkah
2019/12/19
3.4K0
woocommerce隐藏breadcrumb面包屑导航
  woocommerce已经集成比较完善的组件,当然也包含breadcrumb面包屑导航,但是我们如果调整一下breadcrumb的位置要如何操作呢?首先要先把woocommerce隐藏breadcrumb面包屑导航,woocommerce一般是通过hook来绑定相关操作的,我们找到/wp-content/themes/hqt/woocommerce/single-product.php文件,大概31行左右,屏蔽相关代码
ytkah
2019/07/28
1.5K0
如何选择嵌入式产品中的存储器类型 ?
摘要:Flash存储器是一种非易失性内存,其作为数据、系统存储的关键介质,在嵌入式系统中扮演着重要角色。常见的Flash有NAND Flash 、Nor Flash、eMMC等,本文将简单介绍不同Flash的区别及应用场景。
武汉万象奥科
2022/08/30
1.2K0
如何选择嵌入式产品中的存储器类型 ?
如何隐藏WooCommerce Shop Page页面的标题
  有时我们不想显示WooCommerce Shop Page页面标题,如下图所示,需要如何操作呢?随ytkah一起来看看吧。在主题function.php文件中添加下面的代码就可以隐藏了
ytkah
2019/12/16
2.4K0
如何隐藏WooCommerce Shop Page页面的标题
woocommerce根据标题获取相关产品
  我们知道woocommerce的相关文章是根据分类category或标签tag来获取的,能不能实现根据标题来调取相关产品呢?get_posts() 函数可以根据库存、价格、自定义项、搜索条件等不同的标准来显示不同的相关产品,如何操作呢?随ytkah一起来看看
ytkah
2019/12/19
1.6K0
MyEclipse中如何隐藏关闭的项目?
问题描述:   我们有很多已经关闭的项目,不想让它显示,该如何办呢?如下图所示: 操作步骤: 效果如下:
黑泽君
2018/10/11
1.3K0
MyEclipse中如何隐藏关闭的项目?
woocommerce分类页产品数量修改
  我们用woocommerce建商城,不同的模板分类页产品数量不同,如果想要显示更多或更少的数量要如何修改呢?很简单,一行代码就能搞定!打开当前主题的function.php文件,加入如下代码,把18改为任意您想要展示的数量,一般设为15到25,设置太多需要下拉屏幕太长,设置太少需要翻页的次数变多,可以根据实际需要修改
ytkah
2019/10/08
1.3K0
woocommerce shortcode短代码调用
WooCommerce配备了很多shortcode短代码(简码),可以直接在post帖子和page页面内插入内容,方便展示产品、分类等。比如直接在文章编辑时直接插入[products],或者在php文
ytkah
2023/03/14
11.2K0
woocommerce shortcode短代码调用
自定义WooCommerce分类每页产品数量
WooCommerce分类页默认显示为10个产品,但不同的模板显示样式不同,比如3列,那么最后一行就只有一个产品了,不是很协调,如果想要显示显示更多或更少要如何调整呢?要把如下代码copy到你主题functions.php文件中即可。
ytkah
2019/09/25
1.7K0
DevOps产品中的企业项目群模式
项目群,是项目管理中的一个重要概念,一般上规模的公司,都有可能多个项目组成一个项目群并行进行。
yuanyi928
2019/05/07
8940
DevOps产品中的企业项目群模式
input:文件选择和隐藏
新建 html 文件 17-inputFile.html,编写下方程序,运行看看效果吧
鹤川
2023/03/21
1.4K0
MySQL和Java中的货币字段类型选择
在互联网应用中,处理货币是一项常见的任务。为了确保准确性和精度,我们需要选择适当的字段类型来存储货币数据。本文将讨论在MySQL和Java中记录货币时应选择的字段类型,并提供相应的代码示例。
疯狂的KK
2023/08/09
6780
MySQL和Java中的货币字段类型选择
woocommerce调用产品相册gallery图片如何操作?wordpress技巧
  wordpress官网有很多woocommerce模板,但有些客户要求定制模板,这时可能会碰到产品相册图片调用的问题,如果根据自带的Storefront主题来改很麻烦,那我们就自己定义吧!下来就随ytkah一起来看看woocommerce调用产品相册gallery图片吧!以下方法参考https://gist.github.com/Niloys7/17b88d36c1c38844a6cf2127c15dee63
ytkah
2019/06/24
1.4K0
woocommerce调用产品相册gallery图片如何操作?wordpress技巧
8个woocommerce支付网关插件推荐
当然您以前听说过WooCommerce吗?这是用WordPress建立在线商店的最简单方法之一。WooCommerce允许网站所有者添加产品,数字商品,甚至订​​阅(取决于您已安装的WooCommerce扩展)。但是,对于WooCommerce包含的所有强大功能,仅内置了一些默认付款选项。幸运的是,您可以添加大量免费的高级WooCommerce付款网关插件,为客户提供新的结帐选项。
Hoan外贸建站
2020/12/03
6.8K0
MySQL中如何选择VARCHAR和CHAR类型
首先,VARCHAR和CHAR是两种最主要的字符串类型。在设计用于存储字符串的表字段时,可能会对到底选哪个类型有所犹豫,确实如果不了解它们之间的区别,选择上不会那么容易,本篇将详细介绍它们之间的区别以
JavaQ
2018/04/08
1.8K0
MySQL中如何选择VARCHAR和CHAR类型
关于产品摄影的相机选择
作为专业摄影师或从事电子商务的商家,设备将是您进行产品摄影工作的必不可少的物品。通过价格选择优质的设备是大众最常用的方法之一,但是也可以凭借摄影过程中有效的基本知识,为产品摄影选择最佳的相机。我们在这里为您提供入门指南,其中列出了您需要了解的所有信息。
ORBITVU_欧保图
2022/06/30
6690
关于产品摄影的相机选择
【错误记录】IntelliJ IDEA 中右键点击源码目录选择 New 选项 没有创建 Java Class 选项 ( 将对应的源码目录标记为 Sources 选项 )
右键点击源码根目录 , 在弹出的菜单中选择 " Open Module Settings " 选项 ,
韩曙亮
2023/03/30
2.3K0
【错误记录】IntelliJ IDEA 中右键点击源码目录选择 New 选项 没有创建 Java Class 选项 ( 将对应的源码目录标记为 Sources 选项 )
SAP 选择屏幕隐藏selection options
在选择屏幕定义的时候,我们经常会运用NO INTERVALS,将字段改成单值,但是后面的选择框中还有多值输入。
matinal
2023/10/13
4500
点击加载更多

相似问题

WooCommerce隐藏产品

15

WooCommerce自定义产品类型选项不隐藏自定义产品选项卡

118

在Woocommerce中隐藏特定产品的相关产品选项卡

24

仅在WooCommerce单个产品页中隐藏某些产品的选项卡

20

WooCommerce变量产品通知问题-请选择产品选项

65
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文