前言
在 Vue3 开发过程中,有时会发现原本可以正常使用的代码,在调整结构后突然失效。例如点击按钮提示方法不存在。这通常是因为少配置了某个关键属性或混淆了 API 风格。

提示报错
运行时,文本框可能没有初始化到默认值。

点击开始或停止按钮时,控制台提示方法不存在。

问题分析
在 Vue3 的 Composition API 中,定义方法的方式取决于组件的编写风格。是否必须放在 setup() 中,需根据具体写法判断。
1. Options API vs Composition API 风格差异
如果其他页面能直接在外面定义方法,可能是使用了 Options API 风格(Vue 2 传统写法),而报错的页面可能使用了 Composition API 风格(<script setup> 或 setup() 函数)。
✅ Options API 写法(方法直接放在外面)
export default {
methods: {
productSpaceNotice() {
// 直接定义在 methods 中
console.log("方法调用");
}
}
};
✅ Composition API 写法(方法必须在 setup 中定义)
export default {
setup() {
const productSpaceNotice = () => {
// 必须在 setup() 内定义
.();
};
{ productSpaceNotice };
}
};


