</template>
<script lang="ts" setup>
-import { computed } from 'vue'
+import { computed, provide } from 'vue'
import { useRoute, useRouter } from 'vue-router'
const router = useRouter()
const route = useRoute()
+provide('hello', 'from component')
+
const pages = router
.getRoutes()
.filter((route) => !route.meta.hide)
// }
}
-const app = createApp(App).use(pinia).use(router)
+const app = createApp(App)
+ .use(pinia)
+ .use(router)
+ // used in counter setup for tests
+ .provide('injected', 'global')
app.mount('#app')
-import { computed, toRefs, reactive } from 'vue'
+import { computed, toRefs, reactive, inject } from 'vue'
import { acceptHMRUpdate, defineStore } from 'pinia'
const delay = (t: number) => new Promise((r) => setTimeout(r, t))
numbers: [] as number[],
})
+ const injected = inject('injected', 'fallback value')
+ console.log('injected (should be global)', injected)
+
const double = computed(() => state.n * 2)
function increment(amount = 1) {
+<script lang="ts" setup>
+import { ref, inject } from 'vue'
+import { useCounter } from '../stores/counterSetup'
+
+console.log(
+ '(1) injected (within component should be from component)',
+ inject('hello')
+)
+
+const counter = useCounter()
+
+console.log(
+ '(2) injected (within component should be from component)',
+ inject('hello')
+)
+const n = ref(0)
+</script>
+
<template>
<h2>Local variables</h2>
<pre>{{ counter.$state }}</pre>
</template>
-
-<script lang="ts" setup>
-import { ref } from 'vue'
-import { useCounter } from '../stores/counterSetup'
-
-const counter = useCounter()
-const n = ref(0)
-</script>