首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux --使用getState不是优雅的还是低效的?

Redux --使用getState不是优雅的还是低效的?
EN

Stack Overflow用户
提问于 2018-02-07 23:56:28
回答 1查看 65关注 0票数 3

假设我在全球商店里有很多实体

  • 苹果
  • 商店
  • 果汁

如果我想要函数getAppleJuicePrice,我可以用2-3种方式来实现它。

  1. 通径参数 函数getAppleJuicePrice(苹果,果汁){返回苹果*果汁;//某些计算}
  2. 通过getState,没有参数 函数getAppleJuicePrice() {返回(调度,getState) => { const { apples,汁液}= getState();返回苹果*果汁;//某些计算}
  3. 通过getState和参数 函数getAppleJuicePrice( applesParam,juicesParam){返回(调度,getState) => { const apples =applesParam欧元/ getState().apples;const汁液= juicesParam欧元/ getState().juices;返回苹果*果汁;//某些计算}}

*在第2,3种情况下,我需要分派该功能

你能不能给我你的建议

( A)功能1,2,3 --这样做可以吗?还是其中一些更好?

( B)架构(我的意思是说,我们在全球商店中有很多实体,所以我们甚至可以创建依赖它们的功能)。

EN

回答 1

Stack Overflow用户

发布于 2018-02-08 00:32:28

我强烈地认为,例如#1。

这个函数是纯的,描述性的,不依赖于外界的知识。假设您已经可以访问状态,那么获得所追求的值几乎总是比直接请求状态更好。

如果这是不可能的,那么将数据检索分解到第二个函数,然后将您的值传递给第一个函数。这样您就可以清楚地分离关注点,您的方法很容易理解,您不依赖于副作用(状态值的存在),而且这两种方法都应该易于测试。

见鬼,你可以更进一步,重构函数1,成为一个通用的实用工具,用来比较/组合任何东西的价格,而不仅仅是苹果和果汁的价格。

代码语言:javascript
复制
const stateObject = getState() // At top of whatever scope

// Generic, no side-effects
function processPrice (x, y) {
  return x * y; // Whatever processing
}

// Specific, injected dependency on state
function getAppleJuicePrice (state) {
  const { apples, juice } = state;
  return processPrice(apples, juice);
}

// Explicit value assignment
const appleJuicePrice = getAppleJuicePrice(stateObject)

简单地评论一下商店体系结构:总是要尽可能地保持它的简单、扁平和数据相关。为了方便价值计算,避免损害存储的数据结构。任何您可以在本地(并且很容易)派生的东西,都应该这样做。商店不是复杂价值突变的场所。

(*先发制人-这不是一条硬性规则,只是一条准则)

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

https://stackoverflow.com/questions/48675297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档