ask-vue-mechanic
<critical_constraints>
❌ NO <a href=""> → use <Link> to prevent full page reload
❌ NO destructuring props → loses reactivity, use toRefs(props) or props.name
❌ NO forgetting .value → count.value++ not count++
✅ MUST trace upstream to Laravel Controller for missing props
✅ MUST run php artisan optimize:clear after route changes
</critical_constraints>
<silent_reload_fix>
Symptom: Full page refresh (white flash) on link click
Cause: Used <a> tag instead of Inertia Link
Fix: <Link href="/users"> instead of <a href="/users">
</silent_reload_fix>
<prop_tunnel_debug>
- Vue DevTools → inspect Inertia root component props
- Check Laravel Controller → is data passed in
Inertia::render()? - Check
HandleInertiaRequestsmiddleware for global data </prop_tunnel_debug>
<ziggy_routing>
Error: 'users.show' is not in the route list
Fix 1: php artisan optimize:clear
Fix 2: Check route in routes/web.php has ->name('users.show')
Fix 3: Pass params: route('users.show', user.id)
</ziggy_routing>
<form_debugging>
Symptom: Submit → spinner → nothing happens (no error shown)
Cause: 422 validation error, but UI not displaying it
Fix: Add error binding <div v-if="form.errors.email">{{ form.errors.email }}</div>
</form_debugging>
<reactivity_loss>
- Destructuring:
const { name } = props→ useprops.namedirectly - Ref value:
count++→count.value++</reactivity_loss>
<console_noise>
IGNORE: [Intervention] non-passive event listener (benign)
ATTACK: Prop "user" expects Object, got Array → Laravel returned [] not {}
</console_noise>