ecmascript-6 - 从 getter 获取选定的属性

标签 ecmascript-6 vuex

我的状态有一个容器数组,我正在尝试设置一个 getter,将其分为事件容器和非事件容器。

containers: [{
    id: '1',
    name: 'test container',
    image: 'some image',
    state: 'running',
    status: 'Running'
}, {
    id: '2',
    name: 'another test container',
    image: 'some image',
    state: 'stopped',
    status: 'Running'
}]

我用它来获取下面的数组。

export const x = state => _.partition(state.containers, c => c.state === 'running');

问题是我希望它拆分并分配给 activeContainers 和 StopContainers,然后导出。

[
  [
    {
      "id": "1",
      "name": "test container",
      "image": "some image",
      "state": "running",
      "status": "Running"
    }
  ],
  [
    {
      "id": "2",
      "name": "another test container",
      "image": "some image",
      "state": "stopped",
      "status": "Running"
    }
  ]
]

我尝试过使用 ES6 的解构,但我认为我遗漏了一些东西,或者将解构放在了错误的位置,以至于无法与 Vuex 一起使用。

export const [activeContainers = [], stoppedContainers = []] = state => _.partition(state.containers, c => c.state === 'running');

最佳答案

getter 返回函数

根据问题中的评论,确实不能让 getter 映射两个属性。阅读更多内容,了解您不希望为 activeContainersstoppedContainers

提供另一个 getter

经过link之后你分享了,我找到了一种方法,你仍然可以拥有非常接近参数化 getter 的东西。

Here您可以看到它的完整效果。

getters = {
  getContainer: (state) => {
    const [activeContainer = [], inactiveContainer = []] = _.partition(state.containers, c => c.state === 'running')
    return (container) => {
      return (container === 'activeContainer') // returned function
       ? activeContainer
       : inactiveContainer    
    }
  }
}

在这个 getter 中,我返回一个函数,它可以接受参数并获得非常接近您想要的东西。

关于ecmascript-6 - 从 getter 获取选定的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42848615/

相关文章:

javascript - JavaScript Promise.all 是否有一个在成功和失败时触发的回调

javascript - JavaScript 中的 "function*"是什么?

vue.js - 如何从 Vuex 中的突变或 Action 中调用共享辅助函数

vue.js - 为什么Vuex的action会返回一个promise<pending>?

javascript - 检查 store vuex 中的 json 数组是否为空

html - ES6的模块加载器是否也可以加载 Assets (html/css/...)

javascript - 让 Javascript 按值传递变量

javascript - 如何为中型网站构建前端 Javascript

javascript - 如何将数据从 Vuejs 传递到 vuex Store?

vue.js - Vuejs : shared states between components