【问题标题】:Where i should put dynamic and reactive parameter - in vue computed or vue store?我应该将动态和反应参数放在哪里 - 在 vue 计算或 vue 存储中?
【发布时间】:2019-04-18 07:29:20
【问题描述】:

免责声明

我有 vuex 存储,它存储一些数据。例如 -> 商店和 topCategories
在 topCategories 中,我对像这样的商店中的顶级产品有 dict

{ '1' : {name: 'Banana', category: 'Fruits', 'sales': 50}, {name: 'Apple', category: 'Fruits', 'sales': 50} } 其中 '1' 是 shopID

对于每个商店,我们都有相同的 topProducts 字典结构。

我有一个显示所选商店的 topProducts 的组件,该组件应该显示没有重复的顶级产品。如果产品名称相同,他应该总结。

问题
我应该把这个逻辑放在哪里?在视图组件或 vuex 存储操作中的“计算”中?

【问题讨论】:

  • 如果产品名称相同,他应该总结一下你的意思是在你的商店里你有时会有像{'1': {name:'Apple', ...}, {name:'Apple', ...}}这样的条目吗?
  • @BillalBegueradj 是的!

标签: javascript vue.js vuex


【解决方案1】:

您需要将数据存储在 vuex 中,然后在计算方法中访问 getter:

computed: {
  ...mapGetters(['topProducts'])
}

在你的吸气剂中:

topProducts: state => state.topProducts

总而言之,您需要一个动作来提交突变。甚至你可以使用吸气剂。这是一个例子:

computed: {
   ...mapGetters([
     'summingA',
     'summingB'
   ]),
   getTotal() {
    return this.summingA + this.summingB
   }
}

在你的吸气剂中:

summingA: state => state.summingA,
summingB: state => state.summingB

【讨论】:

  • 我知道。我问了总结逻辑
  • 更新了我的答案。希望,这对现在有帮助。
【解决方案2】:

以我的拙见,您应该重新考虑一下到目前为止您是如何设计这个方面的。我的意思是,您的商店不应该出现这样的重复数据:

{ '1' : 
     {name: 'Apple', category: 'Fruits', 'sales': 50}, 
     {name: 'Apple', category: 'Fruits', 'sales': 50}
}

principle 存储是唯一的事实来源,这使得定位特定状态变得简单。这隐含地意味着在商店的状态中有重复的条目不是一个好的设计。您应该先存储数据,然后再将其保存到存储中。遵守这一设计原则会妨碍您处理类似的问题。

【讨论】:

  • 看起来我的问题问得很糟糕。我按 id 为所有商店提供了这些字典,当我选择 shop 1 和 shop 2 时,视图组件应该显示这些字典而不重复,如果名称相同则求和
猜你喜欢
  • 2019-03-23
  • 2020-01-23
  • 1970-01-01
  • 2021-03-29
  • 2018-10-28
  • 2021-03-02
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
相关资源
最近更新 更多