bklLiudl
2024-05-25 484e5129e4c9a671c5660a556a24bd306f1fdd9b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<script>
    const returnArrayFn = () => [];
 
    export default {
        props: {
            options: {
                type: Array,
                default: returnArrayFn
            },
            slotOptions: {
                type: Array,
                default: returnArrayFn
            },
            slotUpdateHook: {
                type: Function,
                default: () => {}
            }
        },
        // if use functional, there will be memory leaks
        // functional: true,
        render(h) {
            // to detect changes in the $slot children/options we do this hack
            // so we can trigger the parents computed properties and have everything reactive
            // although $slot.default is not
            if (this.slotOptions !== this.$parent.$slots.default) this.slotUpdateHook();
            return h('ul', [
                this.$slots.default,
                this.options
            ]);
        }
    };
</script>