我有一些在this.$route
内部使用的组件,用于各种用途。一些简化的示例是,this.$route.name
用于查找页面的 i18n 字符串:
<h1>New {{ $t($route.name + '.label') }}</h1>
或观看$route
并加载一些东西:
watch: {
$route: {
handler: 'loadItem',
immediate: true
}
}
每当这些组件出现在 vue-styleguidist 中时,我都会在浏览器控制台中收到各种错误,并且不会为组件示例呈现任何内容:
index.js?1ef8:1 [Vue warn]: Error in callback for immediate watcher "$route": "TypeError: Cannot read property 'id' of undefined"
found in
---> <MyComponent> at src/components/MyComponent.vue
<Anonymous>
<Root>
我故意不将 vue-router 或我的路由对象导入样式指南,因为这不受支持 - 它会导致重定向、路由保护等许多问题......这些与样式指南无关。
我认为,我真正想做的是this.$route
在组件出现在样式指南中时对其进行模拟——但我不知道该怎么做。
另一种选择是将路由信息作为道具传递给组件。这将正确地将组件与路由器分离并解决问题,但它将涉及对每个组件和路由的更改。