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

fix(runtime-core): prioritize using the provides from currentApp in nested createApp #11502

Merged
merged 2 commits into from
Aug 7, 2024

Conversation

edison1105
Copy link
Member

@edison1105 edison1105 commented Aug 5, 2024

close #11488

Copy link

github-actions bot commented Aug 5, 2024

Size Report

Bundles

File Size Gzip Brotli
runtime-dom.global.prod.js 90.1 kB (+10 B) 34.5 kB (+7 B) 31.1 kB (-3 B)
vue.global.prod.js 147 kB (+10 B) 54 kB (+7 B) 48.1 kB (+16 B)

Usages

Name Size Gzip Brotli
createApp 49.7 kB (+10 B) 19.5 kB (+5 B) 17.8 kB (+4 B)
createSSRApp 53.2 kB (+10 B) 21 kB (+6 B) 19.1 kB (+1 B)
defineCustomElement 51.9 kB (+10 B) 20.2 kB (+5 B) 18.5 kB (+5 B)
overall 63.1 kB (+10 B) 24.5 kB (+7 B) 22.3 kB (+6 B)

@edison1105
Copy link
Member Author

/ecosystem-ci run

@vue-bot
Copy link
Contributor

vue-bot commented Aug 5, 2024

📝 Ran ecosystem CI: Open

suite result latest scheduled
language-tools failure failure
nuxt failure failure
pinia success success
primevue success success
quasar success success
radix-vue success success
router success success
test-utils success success
vant success success
vite-plugin-vue success success
vitepress success success
vue-i18n success success
vue-macros failure failure
vuetify success success
vueuse success success
vue-simple-compiler success success

@Bertie2011
Copy link

Are we certain that currentApp is null/undefined outside runWithContext?

Also, could be simplified to:

const provides = currentApp
      ? currentApp._context.provides
      : instance
        ? instance.parent == null
          ? instance.vnode.appContext?.provides
          : instance.parent.provides
        : undefined

Or even

const provides = currentApp
      ? currentApp._context.provides
      : instance?.parent == null
          ? instance?.vnode.appContext?.provides
          : instance.parent.provides

@edison1105 edison1105 marked this pull request as draft August 5, 2024 05:46
@edison1105 edison1105 marked this pull request as ready for review August 5, 2024 07:59
@edison1105
Copy link
Member Author

@Bertie2011

Are we certain that currentApp is null/undefined outside runWithContext?

I think so.

we avoid using optional chaining at runtime. see #4882 (comment)

@edison1105 edison1105 added 🔨 p3-minor-bug Priority 3: this fixes a bug, but is an edge case that only affects very specific usage. ready for review This PR requires more reviews labels Aug 6, 2024
@yyx990803 yyx990803 merged commit 7e75de0 into vuejs:main Aug 7, 2024
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔨 p3-minor-bug Priority 3: this fixes a bug, but is an edge case that only affects very specific usage. ready for review This PR requires more reviews
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Inject prioritizes current component over RunWithContext app
4 participants