2017-03-17 3 views
2

Ich habe eine Reihe von Containern in meinem Zustand und ich versuche, einen Getter zu Setup, das es in aktive und inaktive Behälter aufteilt.Abrufen einer ausgewählten Eigenschaft von einem 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' 
}] 

Ich verwende dies, um das Array unten zu erhalten.

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

Das Problem damit ist, ich möchte es aufgeteilt und ActiveContainern und stopedContainern zugewiesen und dann exportiert.

[ 
    [ 
    { 
     "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" 
    } 
    ] 
] 

Ich habe versucht, ES6 Dekonstruktion verwenden, aber ich glaube, ich bin etwas fehlt oder die Dekonstruktion an der falschen Stelle setzen es mit Vuex zu arbeiten.

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

Sie versuchen, einem Array eine Funktion zuzuweisen. Das kann nicht gut gehen. – Bergi

+0

Ich möchte nur die Ergebnisse der _.partition exportieren, aber statt 2 Arrays will ich eins. Ich weiß, es gibt einfachere Wege, die ich einfach sehen wollte, wenn es so gemacht werden könnte. –

+0

Sie exportieren gerade ein * function * 'x', kein' state' Objekt oder 'container' Array. Wie würdest du von dort zum Export von zwei Arrays kommen ?! – Bergi

Antwort

2

Rückkehr functions von einem getter

gemäß den Ausführungen in der Frage vorbeigehen, es ist in der Tat wahr, dass Sie nicht zwei Eigenschaften von einem getter abgebildet haben. Lesen mehr, dass Sie nicht einen anderen Getter für die activeContainers und stoppedContainers

Nachdem man durch die link wollte Ihnen geteilt, fand ich eine Art und Weise Sie noch etwas ganz in der Nähe eine parametrisierte getter haben könnte.

Here können Sie es in vollen Effekt sehen.

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

Hier in diesem Getter, ich eine Funktion zurückkehre, die Parameter akzeptieren und etwas ganz in der Nähe bekommen, was Sie sich wünschen.

+0

Dies ist wahrscheinlich am nächsten zu dem, was ich wollte, da ich nicht weiß, dass ich eine Funktion und nicht nur ein Array exportieren muss, damit es es akzeptiert. –

+1

@AlexisTyler Dies ist, was das Github-Problem enthielt. In dem von Ihnen geteilten Thread habe ich gelesen, dass dies ein empfehlenswertes Muster ist. Sie könnten auch den Fragenkopf bearbeiten, da es nicht so sehr darum geht, in vuex zu destrukturieren, sondern eine ausgewählte Eigenschaft von einem Getter zu erhalten. Aber auch ich würde gerne sehen, ob es noch einen flexibleren Weg geben könnte. :) –

Verwandte Themen