# Async Components with keep-alive Ref Issues ## Rule When using ``, ``, and `defineAsyncComponent` together, be aware that template refs can become undefined when the component is re-activated after being deactivated. ## Why This Matters This is a known Vue issue where the ref binding works correctly on first activation but becomes undefined on subsequent activations. This can cause runtime errors when trying to access component methods or properties through refs. ## Problem Scenario ```vue ``` ## Workarounds ### Option 1: Use onActivated to re-establish ref access ```vue ``` ### Option 2: Avoid mixing all three patterns If possible, use one of these alternatives: ```vue ``` ### Option 3: Use provide/inject instead of refs ```vue ``` ## Key Points 1. This is a known issue when combining ``, ``, and `defineAsyncComponent` 2. Refs may become undefined after component deactivation/reactivation 3. Use `nextTick` and null checks when accessing refs 4. Consider alternative patterns like provide/inject for cross-component communication 5. Test thoroughly when using this combination ## References - [Vue.js GitHub Discussion #11334](https://github.com/orgs/vuejs/discussions/11334) - [Vue.js Async Components Documentation](https://vuejs.org/guide/components/async)