2017-07-06 128 views
3

我有一个Vuex状态的初始空对象,它从API中更新。如何检查Vuex状态对象是否为空

const state = { 
    someObject: {} 
} 

如何检查模板中的对象是否为空?

<template> 
    <div v-if="someObject"> 
    This should not display when someObject is empty. 
    </div> 
</template> 

什么是检查状态对象是否设置/空或不是最佳做法?

最初我是否应该设置someObject: null/undefined/false,即使它期望用新对象更新?

在getter中进行检查有意义吗?

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

回答

1

你可以使用lodash方法:_.isEmpty({someObject});

或者,如果你想要做一个getter:

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

这适用于一个对象,但是如果你的状态有很多不同的类型,那么编写各种不同的检查就变得非常繁琐。 – Kokodoko

1

根据具体使用情况下,我会醚设置为null /未定义或如果通过某些所需的对象属性检查,如v-if ='someObject.id',则使其产生如下检测

任何其他接缝都是不必要的复杂化。

+0

因此,可以将其用作默认状态吗? 'const state = {0} {0} {0} {0} someObject:undefined }' – Kokodoko

+1

是的,非常好。 FYI基于null/undefined的ecmascript规范,在这种情况下,使用null而不是undefined更合适。 “null值表示故意没有任何对象值。” – snovakovic