Ecmascript 6 从getter获取选定属性

Ecmascript 6 从getter获取选定属性,ecmascript-6,vuex,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',

我的状态中有一个容器数组,我正在尝试设置一个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和stoppedContainers,然后导出

[
  [
    {
      "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
映射两个属性。阅读更多您不想为
activeContainers
stoppedContainers

在浏览了您共享的内容之后,我找到了一种方法,您仍然可以使用非常接近参数化的
getter

你可以看到它的全部效果

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

在这个getter中,我将返回一个函数,它可以接受参数并获得非常接近您所需的内容。

您正在尝试将函数分配给数组。这不太好。我只想导出u.partition的结果,但不是要返回两个数组,而是要一个。我知道有更简单的方法,我只是想看看是否可以这样做。您当前导出的是函数
x
,而不是
状态
对象或
容器
数组。那么,您如何从那里导出两个阵列?!所以我最好在分区部分返回一个数组,然后复制它,但在另一个getter中返回另一个数组?我认为不可能编写一个getter同时创建两个属性这可能是最接近我想要的,因为我不知道我必须导出一个函数,而不仅仅是一个数组,所以它将接受它。@AlexisTyler这就是github问题所包含的内容。在你分享的帖子中,我读到这是一个可取的模式。您还可以编辑问题标题,因为它与vuex中的解构无关,而是从getter获取选定的属性。尽管我也希望看到是否有更灵活的方法来实现这一目标