@@ -122,18 +122,25 @@ export function transformItems (
122
122
123
123
export function useItems ( props : ItemProps ) {
124
124
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 ) ) )
128
125
126
+ const hasNullItem = shallowRef ( false )
127
+ const emptyValues = shallowRef < any [ ] > ( [ ] )
129
128
const itemsMap = shallowRef < Map < Primitive , ListItem [ ] > > ( new Map ( ) )
130
129
const keylessItems = shallowRef < ListItem [ ] > ( [ ] )
131
130
watchEffect ( ( ) => {
132
131
const _items = items . value
132
+ let _hasNullItem = false
133
+ const _emptyValues = new Set ( )
133
134
const map = new Map ( )
134
135
const keyless = [ ]
135
136
for ( let i = 0 ; i < _items . length ; i ++ ) {
136
137
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
+ }
137
144
if ( isPrimitive ( item . value ) || item . value === null ) {
138
145
let values = map . get ( item . value )
139
146
if ( ! values ) {
@@ -145,6 +152,8 @@ export function useItems (props: ItemProps) {
145
152
keyless . push ( item )
146
153
}
147
154
}
155
+ hasNullItem . value = _hasNullItem
156
+ emptyValues . value = [ '' , null , undefined ] . filter ( v => ! _emptyValues . has ( v ) )
148
157
itemsMap . value = map
149
158
keylessItems . value = keyless
150
159
} )
0 commit comments