From your Props, Events, V-Model and Slots, Provide/inject, Fallthrough attrs notes.
v-model for both, provide/inject for a subtree, a store or shared composable for app-wide state, slots for content, template refs with defineExpose for imperative calls, $attrs for undeclared attributes. Use the most local one that works.ref copy for a draft, an event or defineModel to change the parent's value.v-model: modelValue plus update:modelValue; defineModel() (3.4), named models with an argument, modifiers through const [model, modifiers] = defineModel({ set }).readonly state plus update functions, use an InjectionKey, wrap in provideX/useX.$slots for conditional wrappers.inheritAttrs: false plus v-bind="$attrs" to choose the element.<MyComp v-model.capitalize:name="…"> should be v-model:name.capitalize. And if (nameModifiers.capitalize) name.toUpperCase() changes nothing, because name is a ref and strings are immutable; transform the value in the set option of defineModel('name', { set: v => … }).
Scoped slots don't send information to the parent the way an emit does. They let the child pass data into the slot content the parent provides, at render time, so the parent decides how each item looks while the child owns the logic.
"Global registration in app.vue": global components are registered with app.component() where the app is created, usually main.ts.
<DataList :items> with a scoped #item slot, and use it on two pages that render rows differently.defineModel and a custom .capitalize modifier, and a two-root component that forwards class with $attrs."Props down and events up, with v-model when one value goes both ways. When something has to skip levels inside one part of the tree, provide and inject. When unrelated parts of the app share state, a store like Pinia. Slots for passing content, scoped slots when the child supplies the data. Template refs only for imperative calls like open(). I pick the most local option that works."
Nothing yet. Notes filed here show up on this page and the section overview.
Templates and rendering
v-if versus v-show, why v-for needs a stable key, v-if and v-for on the same element, and template refs with defineExpose.
Reusability
Composables and how to write good ones, the shared-state trap of module-level refs, a useFetch composable with cancellation, custom directives and when to use them, and Vue plugins.