Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

suspensible option throws error when child of suspense is not async #8206

Closed
danielroe opened this issue May 1, 2023 · 2 comments
Closed
Assignees

Comments

@danielroe
Copy link
Member

danielroe commented May 1, 2023

Vue version

3.3.0-beta.3

Link to minimal reproduction

https://play.vuejs.org/#eNptUMtqwzAQ/JXBF9lgqlx6KU4g9AcK6bEX19lggS0JSXYoxv/elWT3RS+SdmY0O7tLcbb2YZ6oeCoa3zllAzyFyZ7eNKBGa1zAgivdlKaz/9Dds2FQkw41eqy4OTNCsIGIHzqjfcCFZThiiQiyXVntJeAYcBoMHU/oS3FVs6gheoXQkyNRZeEar3Rk19Sdbf/LUraJzJZbo/beqgBNd7xwRuWpdOTNMFPUcKhXNZKZwo7WeDwcqq33FjEOklIw3Mi8Hl4MF4FGO7SB0pqay+QtaZ8rrnmi7fmDhM8P9T7swszH5PJbL/+6yd3uF9XIrwzF+gnIkZOe

Steps to reproduce

<script setup>
  import { defineAsyncComponent, h } from 'vue'
  const Sync = {
    setup() {
      return () => h('div', 'hi there')
    }
  }
  const Async = defineAsyncComponent(async () => {
    await new Promise(resolve => setTimeout(resolve, 500))
    return Sync
  })
</script>

<template>
  <Suspense>
    <div>
      <Suspense suspensible>
        <Sync />
      </Suspense>
    </div>
  </Suspense>
</template>

Load page with a synchronous component under <Suspense suspensible> and the following error will be displayed:

suspense.resolve() is called without a pending branch.

I believe this is because there is no suspense needed for the child of the second suspense. When replacing the <Sync> with <Async>, everything works as expected.

What is expected?

I expect that <Suspense suspensible> should work with both async + sync components.

What is actually happening?

It only works with async components.

System Info

No response

Any additional comments?

See #5513, #6736.

@baiwusanyu-c
Copy link
Member

@danielroe In fact, for ssr in #8242 , this error also exists. Evan and I have similar ending ideas. They both avoid calling the resolved method repeatedly, but we both forget to deal with hydration.
I resubmitted a pr to fix it, hope Evan can take a look
@yyx990803

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
4 participants