我曾经使用基于类的样式定义Vue2组件,并希望将我的代码库迁移到组合API。正如我从文档中了解到的,组合API和编写单个文件组件的script setup
方法在Vue 2.7中受支持。但即使是简单的示例也会导致错误。package.json
"vue": "2.7.14",
test.vue
<script setup>
import {ref} from 'vue'
const count = ref(0);
</script>
<template>
<button @click="count++">{{ count }}</button>
</template>
它编译得很好,但是在浏览器控制台中抛出一个错误:
App.js:144 Property or method "count" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://v2.vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.
found in
---> <Test> at test.vue
知道为什么会失败吗?
2条答案
按热度按时间kyks70gy1#
作为解决方法,您可以使用
setup()
函数替换<script setup>
,但仍迁移到合成API我已经在Codesanbox中运行了
根据Vue文档Migration to Vue 2.7,
<script setup>
应与Vue 2.7配合使用。但我也很难让它与Codesanbox一起工作
Composition API
确实可以工作,您可以在控制台输出{value: 0}
中看到它但是模板编译出了问题。
juud5qan2#
这是由于版本问题,你需要升级vue,如果你不想升级到最新版本的vue,那就保持正常的选项API方式,这没什么错。如果你想迁移到合成api,那就升级vue。官方的状态管理库pinia,无论如何都需要vue3,所以如果您以后决定添加状态管理,您将继续遇到问题。