从getter获取选定的属性

时间:2017-03-17 03:19:20

标签: 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和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');

1 个答案:

答案 0 :(得分:2)

functions

返回getter

根据问题中的评论,确实不能有getter映射的两个属性。阅读更多内容,您不希望另外获得activeContainersstoppedContainers

的吸气剂

在浏览了您分享的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中,我返回一个函数,它可以接受参数并得到一些非常接近你想要的东西。