Dev*_*Dev 26 javascript vue.js
我有一个 Vue 3 应用程序。这个应用程序依赖于Vite、Vue Router、Pinia。具体版本有:
该应用程序有一个代表“页面”的文件组件。这个单个文件组件的定义如下:
页面.vue
<template>
<div>
Hello! Thank you for visiting {{ id }}!
</div>
</template>
<script setup>
import { onMounted } from 'vue';
import { useStore } from '../stores/store';
const myStore = useStore();
onMounted(() => {
const props = defineProps({ id:Number });
console.log(props);
});
</script>
Run Code Online (Sandbox Code Playgroud)
我的目标是当有人访问 时https://[my-site].com/pages/{some-id},我会id通过 URL 获取传入的信息。目前,我的路线定义如下:
{
path: '/pages/:id',
name: 'page',
component: () => import('../views/page.vue'),
props: true
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,由于id是我的路线上的参数,因此我可以使用该[defineProps][1]方法。当加载单个文件组件时,我没有看到id. 此外,当我查看控制台日志时,我看到以下内容:
未捕获(承诺中)ReferenceError:defineProps 未定义
我不明白为什么我会收到此错误。我见过的其他问题提到了更改 ESLINT。但是,我没有在我的应用程序中使用 ESLINT。我用的是维特。我该如何修复这个错误?
Bal*_*ude 25
我用更简单的代码遇到了同样的错误。我通过在package.json中添加一个条目消除了错误(使用 Webstorm 创建的项目...)
"eslintConfig": {
"root": true,
"env": {
"node": true,
"vue/setup-compiler-macros": true
},
"extends": [
"plugin:vue/vue3-essential",
"eslint:recommended"
]
}
Run Code Online (Sandbox Code Playgroud)
这个网站帮助我解决了我的问题:ESLint | 修复定义属性
ton*_*y19 20
defineProps是一个用于在<script setup>. 宏被编译掉,并且不能位于生命周期挂钩内,正如您在onMounted(). 此外,在内部定义 props 没有意义,onMounted()因为 props 需要在组件安装之前存在。
道具必须在上下文的顶层声明<script setup>:
<script setup>\n import { onMounted } from \'vue\';\n import { useStore } from \'../stores/store\';\n\n const myStore = useStore();\n\n const props = defineProps({ id:Number }); // \xe2\x9c\x85\n\n onMounted(() => {\n // const props = defineProps({ id:Number }); // \xe2\x9d\x8c move to top level\n console.log(props);\n });\n</script>\nRun Code Online (Sandbox Code Playgroud)\n
kev*_*vnk 14
如果您使用<script setup> with toRefs(defineProps())则会出现此错误。
解决方案可以在这个 stackoverflow 答案中找到。
长话短说:
import { toRefs, defineProps } from 'vue';
// This throws an error:
// const { myProp } = toRefs(defineProps({ myProp: Object }));
// Break it into two lines and the error goes away:
const props = defineProps({ myProp: Object });
const { myProp } = toRefs(props);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40271 次 |
| 最近记录: |