【前端】使用Vue3过程中遇到加载无效设置点击方法提示不存在的情况,原来是少加了一个属性

【前端】使用Vue3过程中遇到加载无效设置点击方法提示不存在的情况,原来是少加了一个属性
🌹欢迎来到《小5讲堂》🌹
🌹这是《前端》系列文章,每篇文章将以博主理解的角度展开讲解。🌹
🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!🌹
在这里插入图片描述

目录

前言

由于博主学习Vue基本属于自学,也没有太系统化去学习,难免有些细节会不太了解,
这次通过DeepSeek的AI应用生成的Vue3代码,直接复制使用,刚开始是可以使用的,
后来调整成平时自己喜欢的方式,发现突然无效了,后来排查发现是少了一个属性,
那么是那个属性呢,一起来看看!

提示报错

运行时,文本框应该会有个默认值,此时是空的没有初始化到值。

在这里插入图片描述


点击开始或者停止按钮,提示方法不存在。

在这里插入图片描述

问题分析

在 Vue 3 的 Composition API 中,有几种不同的方式来定义方法,是否必须放在 setup() 中取决于组件编写方式。

以下是完整的解释和解决方案:

1. Options API vs Composition API 风格差异

如果你的其他页面能直接在外面定义方法,很可能是使用了 Options API 风格(Vue 2 的传统写法),而报错的页面可能是用了 Composition API 风格<script setup>setup() 函数)。

Options API 写法(方法直接放在外面)

exportdefault{ methods:{productSpaceNotice(){// 直接定义在 methods 中console.log("方法调用");}}}

Composition API 写法(方法必须在 setup 中定义)

exportdefault{setup(){constproductSpaceNotice=()=>{// 必须在 setup() 内定义console.log("方法调用");};return{ productSpaceNotice };// 必须返回才能被模板访问}}

<script setup> 语法糖(最简洁的 Composition API)

<script setup lang="ts">// 直接在这里定义,自动暴露给模板constproductSpaceNotice=()=>{console.log("方法调用");};</script>

2. 为什么你的代码会报错?

错误 _ctx.stopCountdownis not a function 表示:

  • 但 Vue 找不到这个方法,因为:
    1. 如果你用了 setup(),但没有在 setup() 内部定义并返回这个方法
    2. 或者你用了 <script setup>,但方法定义在了 <script> 的非 setup 区域。

在模板中调用了 stopCountdown,比如:

<button@click="stopCountdown">按钮</button>

3. 解决方案

根据你的实际代码风格,选择以下对应方案:

方案 1:改用 Options API(适合从 Vue 2 迁移的代码)

exportdefault{ methods:{stopCountdown(){// 直接在这里定义console.log("方法调用");}}}

方案 2:Composition API + setup() 函数

exportdefault{setup(){conststopCountdown=()=>{// 在 setup 内定义console.log("方法调用");};return{ stopCountdown};// 必须返回}}

方案 3:<script setup> 语法糖(推荐)

<script setup lang="ts">// 直接在这里定义,无需 returnconststopCountdown=()=>{console.log("方法调用");};</script>

4. 如何统一代码风格?

如果你的项目中有些页面能用 methods,有些不能用,可能是因为:

  1. 部分组件用了 <script setup>,部分用了 setup() 函数,部分用了 Options API。
  2. 依赖的 Vue 版本或构建工具配置不一致。

建议:

  • 统一使用 <script setup>(最新推荐写法),所有方法直接定义在 <script setup> 中。
  • 如果必须用 setup() 函数,确保所有方法都在其中定义并通过 return 暴露。
  • 避免混用 Options API 和 Composition API。

5. 调试技巧

如果仍然报错,检查:

  1. 确保没有重复定义:比如同时在 setup()methods 中定义同名方法。

是否误用了 export

// 错误!不能在 <script setup> 中用 export defaultexportdefault{ methods:{...}}

<script> 标签是否有 setup 属性

<scriptsetup> // 正确 <script> // 错误(除非用 Options API) 

总结

写法类型方法定义位置是否需要 return示例
Options APImethods: { ... }Vue 2 传统写法
Composition API (setup())setup() 函数内需要手动 return
<script setup>直接写在 <script setup>最新推荐写法

根据你的习惯,选择一种风格并保持项目一致即可解决问题。

文章推荐

【前端】使用Vue3过程中遇到加载无效设置点击方法提示不存在的情况,原来是少加了一个属性

【前端】Vue3+elementui+ts,TypeScript Promise转string错误解析,习惯性请出DeepSeek来解答

【前端】Vue3+elementui+ts,给标签设置样式属性style时,提示type check failed for prop,再次请出DeepSeek来解答

【前端】layui table表格勾选事件,以及常见模块

【前端】Layui的表格常用功能,表单提交事件,表格下拉按钮点击事件,表格外的按钮点击事件

【Echarts】曲线图上方显示数字以及自定义值,标题和副标题居中,鼠标上显示信息以及自定义信息

【Echarts】柱状图上方显示数字以及自定义值,标题和副标题居中,鼠标上显示信息以及自定义信息

【随笔】程序员如何选择职业赛道,目前各个赛道的现状如何,那个赛道前景巨大

【随笔】程序员的金三银四求职宝典,每个人都有最合适自己的求职宝典

Read more

Docker 安装 OpenClaw 报错排查完全手册(续):如何解决pairing required,`EACCES: permission denied`Docker 拉取镜像提示 `denied

Docker 安装 OpenClaw 报错排查完全手册(续):如何解决pairing required,`EACCES: permission denied`Docker 拉取镜像提示 `denied

Docker 安装 OpenClaw 报错排查完全手册(续):如何解决pairing required,EACCES: permission deniedDocker 拉取镜像提示 `denied 按错误关键词 Ctrl+F 秒搜定位,建议与上篇配合收藏! 文章目录 * Docker 安装 OpenClaw 报错排查完全手册(续):如何解决pairing required,`EACCES: permission denied`Docker 拉取镜像提示 `denied * 错误五:`pairing required` * 🔍 错误现象 * 🎯 根因分析 * ✅ 解决方案 * 错误六:`gateway token mismatch` * 🔍 错误现象 * 🎯 根因分析 * ✅ 解决方案 * 错误七:容器启动后立即退出 * 🔍 错误现象 * 🎯 根因分析 * ✅ 解决方案 * 错误八:

By Ne0inhk
Kali Linux 操作系统的安装(详细)

Kali Linux 操作系统的安装(详细)

🔥 个人主页:杨利杰YJlio❄️ 个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》《Python》《Kali Linux》《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更简单,让重复的工作自动化 Kali Linux 操作系统的安装(详细) * Kali Linux 操作系统的安装(详细) * 一、我为什么用虚拟机装 Kali? * 二、安装流程总览(mermaid) * 三、从虚拟机中新创建一个系统 * 1)新建虚拟机:选择 Linux + Ubuntu64 * 2)设置虚拟机名称与安装路径 * 3)设置磁盘:单文件 + 20GB * 4)完成创建后:编辑虚拟机设置并挂载 ISO * 四、开始安装

By Ne0inhk
【网络】一文读懂HTTPS协议

【网络】一文读懂HTTPS协议

目录 * HTTPS是什么 * 如何解决明文传输导致的危险 * 加密操作的几个概念 * 具体加密方式--对称加密 * 具体加密方式--非对称加密 * 具体加密方式--引入证书 HTTPS是什么 * 前面说了HTTP协议,其实HTTPS和他底层是一样的,只是HTTPS在HTTP协议的基础之上加了一个加密层,那么数据就不是明文传输的了,如果使用我们Fiddler这样的抓包工具,抓到了包也不知道我们传输的具体内容是什么了。 * 为啥要使用HTTPS呢,上面说了本质是对我们传输的数据进行加密,在讲解HTTP协议的时候,我们说了报头里面的一个字段Refer大部分用来记录跳转到广告页面的页面是哪一个,方便广告主统计是那个页面跳转的付给对方应有的报酬, 在互联网早期的时候我们大部分公司使用的都是HTTP协议来明文传输数据,这个时候我们要进行网络传输都要经过运营商的路由器/交换机,这个时候有一些运营商就让路由器解析到应用层拿到HTTP里面的内容把Refer字段进行修改成自己的页面跳转到广告页面,这个时候导致内容被恶意篡改了,那么付给原打广告公司的广告费就到了

By Ne0inhk
ARM Linux 驱动开发篇--- Linux 按键输入实验--- Ubuntu20.04互斥体实验

ARM Linux 驱动开发篇--- Linux 按键输入实验--- Ubuntu20.04互斥体实验

🎬 渡水无言:个人主页渡水无言 ❄专栏传送门: 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》 ❄专栏传送门: 《freertos专栏》《STM32 HAL库专栏》《linux裸机开发专栏》 ⭐️流水不争先,争的是滔滔不绝  📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生 | 省级优秀毕业生获得者 | ZEEKLOG新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生 在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连 目录 前言  一、Linux下按键驱动原理 二、硬件原理图分析 三、实验程序编写 3.1、修改设备树文件 3.1.1、添加 pinctrl 节点(引脚复用配置) 3.1.2、添加 KEY 设备节点 3.1.

By Ne0inhk