Skip to content

Conversation

@KaelWD
Copy link
Member

@KaelWD KaelWD commented Dec 29, 2025

blocked by vuejs/vue-jsx-vapor#29

  • check reactivity
  • check performance
  • babel -> esbuild

This looks like a lot but it's mostly two style changes:

  • foo && <div /> -> foo ? <div /> : undefined
    • foo && returns false when not met, which isn't handled by vue's optimised path
  • slots.foo?.() ?? fallback -> renderSlot(slots.foo, () => fallback)

@zhiyuanzmj
Copy link

Oh, Maybe i should convert LogicalExpression to ConditionExpression.

@zhiyuanzmj
Copy link

vuejs/vue-jsx-vapor@0f48e4c#diff-8ffcde0cce9ebaa70dfe58c84117c47ef6da11b6af147a2efd5285e7d57bd884

LogicalExpression || and ?? operator will be covert to ConditionExpression.

@KaelWD
Copy link
Member Author

KaelWD commented Dec 30, 2025

Nice, tyvm. I think you made a mistake with ?? though I left a comment on the commit.

@zhiyuanzmj
Copy link

Now, all of LogicalExpression has been cached, for render number 0 and prevent capture ref twice.
vuejs/vue-jsx-vapor@f3e14b3#diff-8ffcde0cce9ebaa70dfe58c84117c47ef6da11b6af147a2efd5285e7d57bd884

@KaelWD
Copy link
Member Author

KaelWD commented Jan 1, 2026

Lots of reactivity bugs again :(
Looks like maybe the same problem as #21778, slots don't update on external value changes.

@zhiyuanzmj
Copy link

zhiyuanzmj commented Jan 1, 2026

if user using map expression then i can't collect items to detected whether children slots is dynamic and whether should cached events.
So the slots should default to dynamic and don't cached events by default.
Because i always use v-for and v-slot to writing vue-jsx, so I didn't realize this problem.

@zhiyuanzmj
Copy link

v3.1.9 released. if you want mark slots as stable, use _: 1 instead of $stable: true.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants