- Vue – State Management with Pinia
App-wide state, the official way. Setup stores versus option stores and why this track uses setup stores, state as refs, getters as computeds and actions as plain functions, `storeToRefs` and the destructuring bug it exists to prevent, using a store outside a component, and how the demo app's auth store survives a refresh without trusting anything it cached.
- Vue – provide and inject
Getting a value to a deep descendant without threading it through every component in between. `provide` and `inject`, injection keys and why a Symbol beats a string, default values, keeping provided state readonly so a child cannot silently rewrite it, and the honest comparison with Pinia — which one a piece of shared state actually belongs in.
- Vue – Composables: Reusing Logic
The pattern that replaced mixins and the single most useful thing the Composition API bought. What makes a function a composable, the `useX` naming convention, returning refs so the caller keeps reactivity, accepting refs or getters as arguments, cleaning up inside one, and where custom directives fit as the other half of Vue's reusability story.
- Vue – Lifecycle Hooks and Template Refs
When your code runs. `onMounted`, `onBeforeUnmount` and the ones in between, why every listener, timer and observer you create needs an unmount that undoes it, template refs for reaching a real DOM node — the `<video>` element the player controls — refs inside a `v-for`, and `nextTick` for the moment after the DOM has caught up with your data.
- Vue – Slots
Letting a caller pass markup in, not just data. The default slot and fallback content, named slots and the `#name` shorthand, scoped slots that hand data back out to the caller, and how to tell when a problem wants a slot rather than another prop — the question is whether the parent is deciding *what it looks like* or *what it says*.