我的状态有一个容器数组,我正在尝试设置一个 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
映射两个属性。阅读更多内容,了解您不希望为 activeContainers
和 stoppedContainers
经过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/