Skip to content

Commit c5e4bcc

Browse files
committed
perf: single loop
1 parent d39fd22 commit c5e4bcc

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

packages/vuetify/src/composables/list-items.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,18 +122,25 @@ export function transformItems (
122122

123123
export function useItems (props: ItemProps) {
124124
const items = computed(() => transformItems(props, props.items))
125-
const hasNullItem = computed(() => items.value.some(item => item.value === null))
126-
const allValues = computed(() => items.value.map(item => item.value))
127-
const emptyValues = computed(() => ['', null, undefined].filter(v => !allValues.value.includes(v)))
128125

126+
const hasNullItem = shallowRef(false)
127+
const emptyValues = shallowRef<any[]>([])
129128
const itemsMap = shallowRef<Map<Primitive, ListItem[]>>(new Map())
130129
const keylessItems = shallowRef<ListItem[]>([])
131130
watchEffect(() => {
132131
const _items = items.value
132+
let _hasNullItem = false
133+
const _emptyValues = new Set()
133134
const map = new Map()
134135
const keyless = []
135136
for (let i = 0; i < _items.length; i++) {
136137
const item = _items[i]
138+
if (item.value === null) {
139+
_hasNullItem = true
140+
}
141+
if (item.value === '' || item.value == null) {
142+
_emptyValues.add(item.value)
143+
}
137144
if (isPrimitive(item.value) || item.value === null) {
138145
let values = map.get(item.value)
139146
if (!values) {
@@ -145,6 +152,8 @@ export function useItems (props: ItemProps) {
145152
keyless.push(item)
146153
}
147154
}
155+
hasNullItem.value = _hasNullItem
156+
emptyValues.value = ['', null, undefined].filter(v => !_emptyValues.has(v))
148157
itemsMap.value = map
149158
keylessItems.value = keyless
150159
})

0 commit comments

Comments
 (0)