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

3 个 React 状态管理的规则

创建 React hook 是为了将组件与复杂状态管理和副作用隔离开。因此,由于组件只应关注要渲染的元素和要附加的某些事件侦听器,所以应该把复杂的状态逻辑提取到自定义 hook 中。...考虑一个管理产品列表的组件。用户可以添加新的产品名称。约束是产品名称必须是唯一的。...单击 Add 按钮时,将调用 addNewProduct() 事件处理程序。 在 addNewProduct() 内部,用 Set 对象来保持产品名称唯一。组件是否应该关注这个实现细节?不需要。...最重要的是,将复杂的状态管理提取到自定义 hooks 中的好处是: 该组件不再包含状态管理的详细信息 自定义 hook 可以重复使用 自定义 hook 可轻松进行隔离测试 No.3 提取多个状态操作 将多个状态操作提取到化简器中...继续用 ProductsList 的例子,让我们引入“delete”操作,该操作将从列表中删除产品名称。 现在,你必须为 2 个操作编码:添加和删除产品。

1.7K00

【译】3条简单的React状态管理规则

2.提取复杂的状态逻辑 将复杂的状态逻辑提取到自定义钩子中。 将复杂的状态操作保留在组件中是否有意义? 创建React Hook是为了将组件从复杂的状态管理和副作用中隔离出来。...因此,由于组件应该只关心要呈现的元素和要附加的一些事件侦听器,所以应该将复杂的状态逻辑提取到自定义Hook中。 让我们考虑一个管理产品列表的组件。用户可以添加新的产品名称。约束是产品名称必须唯一。...在addNewProduct()中,使用一个Set对象来保持产品名称的唯一性。组件应该关注这个实现细节吗?不。 最好将复杂的状态设置器逻辑隔离到自定义Hook中。...最重要的是,将复杂的状态管理提取到自定义Hook中的好处是: 组件不再需要状态管理细节 自定义钩子可以重用 可以很容易地在隔离状态下测试自定义Hook 3.提取多个状态操作 将多个状态操作提取到一个reducer...继续使用ProductsList的示例,让我们添加一个Delete操作,该操作从列表中删除一个产品名称。 现在,您必须编码2个操作:添加和删除产品。

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

    我做了个数据选品工具,帮你们搜寻护发神器

    (DT君注:后台回复“选品工具”可获取工具及代码链接) 这篇文章我将具体介绍我的研究方法和发现,以及我是怎么鼓捣出这个小工具的。 ?...从中可以发现,顾客认为最重要的因素还是产品的功效和香味。 另外,“推荐” 一词在评论数据集中是经常出现的。所以,我认为口碑是值得品牌们关注的重要的市场策略。 ?...它是在内积空间两个非零向量之间的一种相似度的度量,即计算他们之间角度的余弦值。 就信息检索如搜索引擎来说,两个文档的余弦相似度的值是在0到1之间的,因为词频(TF-IDF权重)不能为负。...▍我的几点结论 大多数护发品产品属于家居品牌。 在Influenster上,来自加州、佛罗里达州、德克萨斯州和纽约的用户更为活跃。 一款产品的评论数量和评分之间往往呈负相关。...通过加上产品描述,用户有更高的概率不仅仅是匹配产品名称,还可以匹配产品描述来检索,这样他们能够检索到更相关的商品,并且探索更多产品的新特性。

    61500

    关系型数据和文档型数据库有什么区别?

    文章收录地址:Java-Bang 专注于系统架构、高可用、高性能、高并发类技术分享 关系数据库(Relational Database)是建立在关系模型基础上的数据库,借助于几何代数等数学概念和方法来处理数据库中的数据...其中,订单 ID 和产品 ID 为联合主键,但这个表中的产品名称和产品单价两个字段只依赖产品 ID,和订单 ID 就没有任何关系了,因此这个表也不符合第二范式。...我们可以把原来的订单表拆分为订单表和产品表,其中订单表包含:订单 ID、产品 ID、折扣等字段;而产品表包含:产品 ID、产品名称、产品单价等字段。...这样就消除了产品名称和产品单价多次重复出现的情况了,从而避免了冗余数据的产生。...使用它可以有效地避免在增加和修改数据库带来的沟通成本,以及维护和创建数据库模型成本,使用 MongoDB 只需要在程序层面严格把关就行,程序提交的数据结构可以直接更新到数据库中,并不需要繁杂的设计数据库模型再生成修改语句等过程

    5.3K40

    红牛变累牛,山寨商品屡禁不止

    类似的山寨品牌层出不穷,它们往往直接照搬了正品包装,只对产品名称其中一个字进行改变,以假乱真便于混淆消费者的视线。...如何预防和打击山寨品牌 商标被山寨,对于品牌的伤害是十分严重的,一旦消费者认为这个品牌“假货”很多,就可能放弃这个品牌,那么如何预防和打击商标被山寨呢?...1、重视商标监控 定时监控商标网发布的初审公告中,是否有企业注册近似商标,如果有及时提出异议。也可以对于已经注册的商标进行筛查,对于筛查出已经注册的近似商标进行无效宣告。...3、对于山寨品牌发起维权 无论对方有没有注册商标,在市面上看到仿冒品都可以依法发起维权,向法院提起诉讼,可以要求对方停止侵权甚至赔偿损失,另一方面也可以震慑其他侵权的山寨商标。...抄袭知名品牌,似乎是一条通往成功的捷径,但一味模仿终究会被打上“山寨”的烙印。只有真正地将商标依附在优质的产品或服务上,以品质占领市场、以口碑打动消费者,才是对商标价值最好的诠释。

    62530

    Power Pivot数据建模基础:数据表间的4种基本关系类型

    另外,多对多关系还有一种情况,数据表之间的关系其实是明确的,但要靠多个字段共同来确定,比如上面的订单明细表和产品表,如果订单明细表里增加一列“供应商”的内容,那么这两个表之间,就可以通过产品名称和供应商...2列一起确定两表之间的明确关系,如下图所示: 可惜,无论是哪一种多对多关系,Power Pivot里是不支持的。...如果是订单明细表里有供应商字段的话,那么可以将产品名称和供应商连起来,构造一个新的字段,最终还是转换为一对多的关系。...也可以这么理解吧,所以在Power Pivot里你只要对订单表和订单明细表、订单明细表和产品表分别建立表间关系,那么就可以在订单表里通过一定的方法得到产品表的相关信息,或在产品表里通过一定方法获得订单表里的信息...,不过这方面的内容比较复杂一些,在后续的数据建模中咱们再一起看。

    3.6K31

    全文检索工具:第一章:Spring-data-elasticSearch搜索

    控制层: @Autowired private EsProductService esProductService; @ApiOperation(value = "简单搜索:根据关键字,品牌名称或者产品名称...esProductService.deleteAll(indexName); return CommonResult.success(i); } @ApiOperation(value = "导入所有产品信息数据库中商品到...EsProductService { /** * 从数据库中导入所有商品到ES */ int importAll(); /** * 根据关键字,品牌名称或者产品名称搜索...result++; iterator.next(); } return result; } /** * 根据关键字,品牌名称或者产品名称...方法 } 测试一下: 删除测试 导入数据到es测试 无条件全部搜索测试 有条件搜索测试 如果启动报错,可以将原来的 @Document(indexName = "search", type =

    40610

    【新媒体运营工具推荐】新媒体人年关冲刺8大神器,将KPI赶尽杀绝!

    推荐理由:正版素材,内容优质,涉及领域广 04 问卷星 主要功能:问卷调查/在线考试平台 产品名称:问卷星 功能描述:问卷星是一款强大易用的信息收集、数据分析工具,作为国内最大的在线问卷平台,问卷星不止在问卷调查领域独占鳌头...,在考试、投票、测评乃至专业的360度评估上都提供了强大的功能和极佳的体验。...公众号运营人员、企业、机构、HR、老师、学生都可以使用问卷、表单等功能来完成用户意见征集、反馈,或者举办考试、投票、测评等活动,加强与用户之间的互动,从而轻松高效完成运营任务。...支持多人同时对内容进行编辑和评论,可以让你与他人轻松完成协作撰稿、方案讨论、会议记录和资料共享等工作。...目前已有超百万学员选择和秋叶一起学PPT! 作为国内知名Office教育品牌,秋叶团队从PPT起步,专注Office教育,希望通过轻松有趣的教学,帮助更多人提升职场办公技能。

    1K00

    对单体系统优缺点评判到位:拆分Shopify单体工程的经验分享

    我们选择将Shopify发展为模块化单体,这意味着我们将所有代码保存在一个代码库中,但确保在不同组件之间定义和遵守边界。...单体架构可以将应用程序推向极致,因为它易于构建,并允许团队在一开始就非常快速地移动,以便更早地将产品提供给客户。 将整个代码库保存在一个位置并将应用程序部署到一个位置具有许多优点。...我们遇到的所有问题都是代码中不同功能之间缺乏界限的直接结果。很明显,我们需要减少不同域之间的耦合。 微服务架构 微服务是一种非常时髦的解决方案。...微服务架构是一种应用程序开发方法,其中大型应用程序构建为一套独立部署的小型服务。虽然微服务可以解决我们遇到的问题,但它们会带来另一整套问题。...我们仍然可以使用。来追踪起源git -follow选项跟随文件移动的历史,但是,Github不理解这一举动。 隔离依赖关系 下一步是通过将业务域彼此分离来隔离依赖关系。

    1.5K30

    【Java设计模式】009-抽象工厂模式

    工厂方法模式中,一个工厂创建一个产品,如果产品非常多,这些产品又对应各种各样的品牌,那么工厂类就太多了,这里抽象工厂模式对其进行整合,将每一个品牌(系列)的产品放在同一个工厂里面创建,形成一个综合工厂。...时间:2021年05月13日 11时25分06秒 1、概述 简单讲:抽象工厂定义创建的多个产品,具体工厂负责创建,每个具体工厂负责一个品牌的产品的创建,使用者根据具体工厂和产品名称获得产品; 抽象工厂...类似同一类型不同品牌的产品; 优点 除了具有工厂方法模式的优点外,其他主要优点如下 可以在类的内部对产品族中相关联的多等级产品共同管理,而不必专门引入多个新的类来进行管理; 当需要产品族时...增加了系统的抽象性和理解难度; 4、主要角色 抽象工厂(Abstract Factory):提供了创建产品的接口,它包含多个创建产品的方法 newProduct(),可以创建多个不同等级的产品;...,不满足开闭原则; 另一方面,当系统中只存在一个等级结构的产品时,抽象工厂模式将退化到工厂方法模式。

    10510

    架构的演进,阿里资深Java工程师表述架构的腐化之谜

    与过去不同,现在的技术不仅仅在编程语言方面,常见的编程套路、最佳实践、方法学、社区,都是各种技术独特拥有的。目前占据主流的阵营有: Rails Java EE平台。...下一条,重构到物理隔离的组件则是对不断增大的代码库另一种解决方案。 1. 重构到物理隔离的组件 显而易见的趋势是,对于同一个产品而言,需求总是不断增多的。去年有100个功能,今年就有200个。...流行的.NET和Java世界倾向于把什么都放到一起。而 Linux世界Rails/Django则能更好的平衡优秀产品之间的进程协调。例如memcached的使用。...当系统规模上非常庞大,例如由若干个子系统组成;界面基本一致;子系统之间关联较少。针对这个前提,可以考虑采用这种架构。抽象出极少的、真正有效公用的信息,在系统之间通过HTTP POST.。...想象一下现在的Rails3/Spring框架,他们往往有超过20个第三方依赖,我们却没有觉得理解困难,最重要的原因是依赖隔离之后,这些模块有了独立的文档可以学习。 企业级项目也可以如此。

    1.1K100

    架构的演进, 阿里资深Java工程师表述架构的腐化之谜

    与过去不同,现在的技术不仅仅在编程语言方面,常见的编程套路、最佳实践、方法学、社区,都是各种技术独特拥有的。目前占据主流的阵营有: Rails Java EE平台。...下一条,重构到物理隔离的组件则是对不断增大的代码库另一种解决方案。 1. 重构到物理隔离的组件 显而易见的趋势是,对于同一个产品而言,需求总是不断增多的。去年有100个功能,今年就有200个。...流行的.NET和Java世界倾向于把什么都放到一起。而 Linux世界Rails/Django则能更好的平衡优秀产品之间的进程协调。例如memcached的使用。...当系统规模上非常庞大,例如由若干个子系统组成;界面基本一致;子系统之间关联较少。针对这个前提,可以考虑采用这种架构。抽象出极少的、真正有效公用的信息,在系统之间通过HTTP POST.。...想象一下现在的Rails3/Spring框架,他们往往有超过20个第三方依赖,我们却没有觉得理解困难,最重要的原因是依赖隔离之后,这些模块有了独立的文档可以学习。 企业级项目也可以如此。

    70950

    架构的演进,阿里资深Java工程师表述架构的腐化之谜

    与过去不同,现在的技术不仅仅在编程语言方面,常见的编程套路、最佳实践、方法学、社区,都是各种技术独特拥有的。目前占据主流的阵营有: Rails Java EE平台。...下一条,重构到物理隔离的组件则是对不断增大的代码库另一种解决方案。 1. 重构到物理隔离的组件 显而易见的趋势是,对于同一个产品而言,需求总是不断增多的。去年有100个功能,今年就有200个。...流行的.NET和Java世界倾向于把什么都放到一起。而 Linux世界Rails/Django则能更好的平衡优秀产品之间的进程协调。例如memcached的使用。...当系统规模上非常庞大,例如由若干个子系统组成;界面基本一致;子系统之间关联较少。针对这个前提,可以考虑采用这种架构。抽象出极少的、真正有效公用的信息,在系统之间通过HTTP POST.。...想象一下现在的Rails3/Spring框架,他们往往有超过20个第三方依赖,我们却没有觉得理解困难,最重要的原因是依赖隔离之后,这些模块有了独立的文档可以学习。 企业级项目也可以如此。

    1.4K120

    向量搜索如何影响客户购物习惯

    如果我们鼓励客户使用手机扫描物品,我们将知道哪些物品在他们的实体购物车中。然后,我们可以呈现类似的物品来补充购物车中已有的产品。...为了制定一个最小可行产品,我们可以仅关注产品名称并基于“词袋”方法构建自然语言处理(NLP)模型。 在这种方法中,我们从所有产品名称中获取每个单词,并为每个唯一的单词创建一个条目。这就是我们的词汇表。...表1 - 宠物用品类别下产品名称的词袋NLP词汇表,显示每个向量的组装方式。 “词袋”方法的一个问题是向量可能包含更多的零比一。这可能导致更长的模型训练时间和更长的预测时间。...然后,我们可以在 Apache Cassandra 集群中创建一个表来支持每个特定类别的向量搜索。...我读到不同的 NLP 算法如 “Word2Vec” 在长期内可能是一个更好的方法。我们的模型也仅关注构建包含产品名称词汇的词汇表。

    11810

    『设计模式』设计模式--原型模式

    为了避免创建一个与产品类层次平行的工厂类层次时。 当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。...关键代码: 实现克隆操作,在 JAVA 继承 Cloneable,重写 clone(),JAVA语言中已经提拱了Clone方法,定义在Object 类中,需要实现克隆功能的类,只要事先java.lang.Clonabe...在 .NET 中可以使用 Object 类的 MemberwiseClone() 方法来实现对象的浅拷贝或通过序列化的方式来实现深拷贝,也可以实现IClonable接口。...IClonabe接口中有一Clone方法,可以在类中复写,实现自定义的克隆方法。 原型模式同样用于隔离类对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些"易变类"拥有稳定的接口。...在实际项目中,原型模式很少单独出现,一般是和工厂方法模式一起出现,通过 clone 的方法创建一个对象,然后由工厂方法提供给调用者。原型模式已经与 Java 融为浑然一体,大家可以随手拿来使用。

    1.2K50

    推荐系统之路 (2):产品聚类

    虽然还是关于推荐系统,但这次讲的是产品聚类以及相关方法,具体见下文↓↓ 在上一篇文章中,我大致介绍了推荐系统,但卡在了矩阵系统的性能这一块。...「走个过场」:融合信息 我们将会使用数据集提供的产品信息(即产品编码、产品名称、产品 URL 和产品价格)来确定产品的相似度。然而,现在每个商店都会用内部系统来追踪产品。...文本聚类预处理步骤 我们要对数据进行以下预处理过程: 首先,我们确认产品的品牌并将其从产品名中剔除,这样我们得到的就是单纯的产品名了。 然后,我们分离产品名中描述颜色的单词,以便减少数据噪声。...为了将产品名输入至算法中,我们要把数据转换为向量。为此,我们使用 2 个不同的向量器:CountVectorizer 和* *tf-idf Vectorizer。...DBSCAN 是一种基于密度的算法,它依赖于向量相互之间的距离,以创建分组。 DBSCAN 生成的分组: ? 为什么 DBSCAN 无法正确地聚类数据? 产品名一般都很短(1~5 个单词)。

    82540

    SQL 必知必会 50 题(16 - 20)

    有好几种方法可以执行此操作,但对于这个挑战题,请使用 AND 和两个 LIKE 比较。...AND 关键字,那么可以将条件拆分为两个模糊查询,一个是描述中含有 toy 的产品,一个是描述中含有 carrots 的产品,然后利用关键字 AND 将两个条件串联就可以了。...(prod_name)和描述(prod_desc),仅返回在描述中以先后顺序同时出现 toy 和 carrots 的产品。...有好几种方法可以执行此操作,但对于这个挑战题,请使用 AND 和两个 LIKE 比较。...AND 关键字,那么可以将条件拆分为两个模糊查询,一个是描述中含有 toy 的产品,一个是描述中含有 carrots 的产品,然后利用关键字 AND 将两个条件串联就可以了。

    29220

    关键词堆砌是什么?

    建议把产品标题填写完整,也需要注意的是产品标题不要堆砌多个产品词,建议一个产品标题只包含一个产品名称。另外,可以适当补充营销内容,吸引 来买家眼球,从而有机会带来 源更多商机。 举例: a....堆砌关键词的产品信息标题举例: a) 2011新品秋冬款 女气质修身职业毛呢背心裙 连衣裙 毛呢裙997A款 其中背心裙,连衣裙,毛呢裙三个产品名称词同时出现,各自有独立的含义,属于堆砌, 如果写成毛呢连衣裙就不是堆砌关键词...建议把产品属性填写的尽可能的完整 如何把关键词堆砌解决,有什么好的建议 关键词分部在首页、列表页、频道页、文章页等,核心词出现在TDK(title标题、描述、关键词)中。...;D: 包含4个核心词+品牌词,联系方式;(网页描述不超过70个汉字)K: 4个核心词+品牌词;(同T).导航栏目页(文章页、列表页、频道页)、单页面T: 2个核心词+品牌词,或者3个核心词;D:包含2...关键词要做到排名要准备:1、做多个关键词的长尾关键词,如关键词是漂亮,那么长尾关键词可以是中国人长得漂亮。2、这些长尾关键词要有搜索量,在百度上查看,有搜索量的长尾关键词可以做优化。

    92530

    如何用ChatGPT提升创作能力?看看这110个必备文案示例

    ChatGPT 可以帮助你获取各种信息,因为它可以: 1. 从互联网上搜索和提取相关信息,并以自然语言的形式呈现。 2. 根据你的需求和偏好,过滤和整理信息,并给出有用的建议和链接。 3....在聊天框中输入你想获取信息的主题、目标、范围等信息,并按下回车键。 3. 等待 ChatGPT 给出回复,并根据需要与它进行交流或修改。...34 撰写一个关于 [公司/品牌] 及其在 [战略/解决方案] 方面的成功的案例研究。 35 撰写一篇关于 [有争议的话题] 的发人深省的文章,并提供不同的观点。...52 写一封突出 [产品/服务] 独特卖点的销售信。 53 写一封说服 [目标受众] [产品/服务] 解决了他们的问题的销售信。 54 写一封强调 [产品/服务] 在竞争中的优势的销售信。...产品描述 以下是使用 ChatGPT 编写产品描述的方法:  # ChatGPT 产品说明 提示 101 为 [产品名称] 编写产品描述,突出其独特功能。

    62240

    数据开发数仓工程师上手指南(二)数仓构建分层概念

    前言回顾上篇文章我们可以用思维导图一遍概览:在了解了数仓的基本架构之后,我们还需要掌握数仓构建方法,也就是了解数仓是如何建模的,有什么规则和通用方法。...层次结构:维度通常具有层次结构,例如时间维度可以包括年、季度、月、日等层次。示例:时间维度:包含年、季度、月、日等信息。产品维度:包含产品ID、产品名称、类别、品牌等信息。...VARCHAR(50), Product_Brand VARCHAR(50));维度建模是一种数据仓库设计方法,专注于优化数据的存储和查询性能,以支持高效的数据分析和业务决策。...产品名称(Product_Name):产品的名称。产品类别(Product_Category):产品所属的类别。产品品牌(Product_Brand):产品的品牌。...折扣金额(Discount Amount):每笔销售的折扣金额,可以累加。库存管理过程中的度量:库存数量(Inventory Quantity):每种产品在每个仓库中的库存数量,半累积。

    36531
    领券