问题现象
在 Vue3 项目中,文本框默认值未初始化,点击开始或停止按钮时,控制台报错 _ctx.stopCountdown is not a function,提示方法不存在。

原因分析
在 Vue 3 的 Composition API 中,方法的定义和暴露方式取决于组件编写风格。如果混用了 Options API 和 Composition API,或者未在 setup() 中正确返回方法,会导致模板无法访问该方法。
Options API vs Composition API 风格差异
- Options API 写法(方法直接放在
methods中):
export default {
methods: {
productSpaceNotice() {
console.log("方法调用");
}
}
}
- Composition API 写法(方法必须在
setup()中定义并返回):
export default {
setup() {
const productSpaceNotice = () => {
console.log("方法调用");
};
return { productSpaceNotice }; // 必须返回才能被模板访问
}
}
<script setup>语法糖(最简洁的 Composition API):
<script setup lang="ts">
// 直接在这里定义,自动暴露给模板
const productSpaceNotice = () => {
.();
};


