2017-07-06 6 views
3

Ich habe ein initiales leeres Objekt im Vuex-Status, das von einer API aktualisiert wird.Wie überprüft man, ob das Vuex-Statusobjekt leer ist

const state = { 
    someObject: {} 
} 

Wie überprüfe ich, ob das Objekt in meiner Vorlage leer ist?

Was ist die beste Methode, um zu überprüfen, ob ein Statusobjekt gesetzt ist/leer ist oder nicht?

Sollte ich zunächst someObject: null/undefined/false setzen, auch wenn erwartet wird, mit einem neuen Objekt aktualisiert zu werden?

Ist es sinnvoll, Eincheck-Getter durchzuführen?

export const someObject = state => Object.getOwnPropertyNames(state.someObject).length == 0 ? state.someObject : false 

Antwort

1

Sie könnten die lodash Methode verwenden: _.isEmpty({someObject});

Oder wenn Sie einen Getter tun wollte:

computed:{ 
    objectLength(state){ 
    return Object.keys(state.someObject).length 
    } 
+0

Das funktioniert für ein Objekt, aber wenn Ihr Zustand viele verschiedene Typen hat, wird es mühsam, alle Arten von verschiedenen Prüfungen zu schreiben. – Kokodoko

1

Abhängig von bestimmten Anwendungsfall würde ich es gesetzt Äther auf null/undefined oder make, wenn Prüfung durch einige erforderliche Objekteigenschaften wie v-if = 'someObject.id'

Alles andere Nähte als unnötige Komplikation.

+0

Also ist es in Ordnung, dies als Standardzustand zu verwenden? 'const state = { someObject: undefined }' – Kokodoko

+1

Ja vollkommen in Ordnung. FYI basierend auf der ecmascript-Spezifikation auf null/undefined In diesem Fall wäre es sinnvoller, null statt undefined zu verwenden. "Der Wert null repräsentiert die absichtliche Abwesenheit eines Objektwerts." – snovakovic

Verwandte Themen