V4Fire / Client

V4Fire client core library
MIT License
23 stars 15 forks source link

Maximum call stack size exceeded при вызове vue.unmount при очистке async-render'а #1493

Open shining-mind opened 1 day ago

shining-mind commented 1 day ago

В примере examples/1493 нажать на "Clear Async".

Получаем ошибку:

vue.js:1716 Uncaught (in promise) RangeError: Maximum call stack size exceeded
    at callWithErrorHandling (vue.js:1716:11)
    at callWithAsyncErrorHandling (vue.js:1722:23)
    at invokeDirectiveHook (vue.js:4333:15)
    at unmount (vue.js:7569:19)
    at unmountChildren (vue.js:7704:15)
    at unmount (vue.js:7579:19)
    at unmountChildren (vue.js:7704:15)
    at unmount (vue.js:7579:19)
    at unmountChildren (vue.js:7704:15)
    at unmount (vue.js:7579:19)

Разметка:

< . v-async-target | :style = {background: 'cyan'}
    < template v-for = _ in asyncRender.iterate(1, {filter: (el) => async.sleep(100), group: 'hello'})
        < b-button
            Functional button

        < div

Если убрать div рядом с b-button, то ошибки нет. При наличии же div рядом с b-button у vnode b-button появляются dynamicChildren, причём первый элемент ссылается на саму vnode b-button.