programing

getter에서 선택한 속성 가져오기

prostudy 2022. 7. 10. 21:39
반응형

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');

문제는 분할하여 active Containers와 stopped 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"
    }
  ]
]

ES6의 디커버리먼트를 사용해 보았습니다만, Vuex에서 동작하기 위해서 뭔가 부족하거나 디커버리먼트를 잘못 배치한 것 같습니다.

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

돌아오는functions에서getter

질문의 코멘트에 의하면, 2개의 속성을 매핑할 수 없는 것은 사실입니다.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에서는 파라미터를 받아들여 원하는 것에 매우 가까운 것을 얻을 수 있는 함수를 반환합니다.

언급URL : https://stackoverflow.com/questions/42848615/getting-a-selected-property-from-a-getter

반응형