【前端】使用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

Z-Image-Turbo镜像推荐:Gradio WebUI免配置快速上手教程

Z-Image-Turbo镜像推荐:Gradio WebUI免配置快速上手教程 你是不是也遇到过这些情况:想试试最新的AI绘画模型,结果卡在环境搭建上——下载权重动辄几十GB、配置CUDA版本让人头大、改配置文件改到怀疑人生?或者好不容易跑起来了,WebUI界面又丑又难用,中文提示词还乱码?别折腾了。今天要介绍的这个镜像,真的做到了“点开即用”。 Z-Image-Turbo不是又一个参数堆砌的玩具模型,而是阿里通义实验室实打实打磨出来的高效文生图方案。它不靠堆显存换效果,而是用蒸馏技术把大模型的精华“浓缩”出来——8步出图、照片级质感、中英文文字渲染稳得一批,16GB显存的消费级显卡就能扛住。更重要的是,它被完整集成进了一个开箱即用的ZEEKLOG镜像里,连Gradio界面都给你调好了配色和字体,连“怎么输入中文”这种细节都考虑到了。 这篇文章不讲原理推导,不列参数表格,也不让你手动clone仓库、pip install一堆包。我们就用最直白的方式,带你从零开始,在5分钟内看到第一张由Z-Image-Turbo生成的高清图像。你不需要懂Diffusers,不需要会调acceler

BERT-webui访问失败?端口映射部署问题解决实战案例

BERT-webui访问失败?端口映射部署问题解决实战案例 1. 问题现场:点击HTTP按钮却打不开Web界面 你兴冲冲地拉取了BERT-webui镜像,执行启动命令,平台也显示“服务已运行”,还贴心地弹出一个蓝色的“HTTP”按钮——可一点开,浏览器就卡在空白页,或者直接报错“无法连接到服务器”“ERR_CONNECTION_REFUSED”。更让人困惑的是,终端日志里明明写着INFO: Uvicorn running on http://0.0.0.0:7860,但http://localhost:7860就是打不开。 这不是模型没跑起来,也不是代码有bug,而是最常被忽略、却最影响上手体验的一环:端口映射没对上。今天我们就用真实排查过程,带你从零理清BERT-webui访问失败的底层逻辑,并给出三套即插即用的解决方案。 2. 为什么BERT-webui会“看不见”?端口映射的本质讲清楚 先说结论:WebUI能被你访问,不取决于模型跑在哪,而取决于“谁在监听哪个IP+

前端八股 -- JS高级篇(最全菜鸟级指南,帮你读懂!)

一、JS执行机制 1. 事件循环 1.1 什么是事件循环?         JavaScript 是单线程语言(同一时间只能做一件事),但要处理点击、网络请求、定时器等异步操作 —— 事件循环(Event Loop)就是 JS 解决 “单线程干多件事” 的核心机制,本质是同步代码先执行,异步代码排队等执行的规则。 1.2 执行栈与任务队列 1.2.1 执行栈 核心规则:遵循后进先出(LIFO),就像叠盘子 —— 最后放的盘子(最后调用的函数)先拿走(先执行)。 通俗例子: function a() { b(); } function b() { c(); } function c() { console.log('

工业监控系统:C#上位机多PLC数据采集+Web可视化(WPF+SignalR)

工业监控系统:C#上位机多PLC数据采集+Web可视化(WPF+SignalR)

在工业自动化产线、智能工厂监控场景中,多PLC设备的集中数据采集与远程可视化是核心需求。WPF作为C#高端桌面应用框架,具备美观流畅的界面渲染能力;SignalR作为实时通信框架,可实现桌面端与Web端的毫秒级数据推送。本文将从零到一搭建多PLC并行采集(西门子S7系列)+ WPF本地监控 + SignalR实时推送 + Web可视化展示的完整工业监控系统,代码可直接复用,适配工业现场严苛环境。 一、项目核心架构与前期准备 1.1 整体架构设计 系统采用“分层架构+分布式通信”模式,形成“设备层-采集层-通信层-可视化层”的完整闭环: 1. 设备层:多台西门子PLC(S7-200SMART/300/400/1200/1500),提供产线温度、压力、电机转速、IO状态等工业数据; 2. 采集层:WPF上位机(.NET 8),封装多PLC并行采集工具类,支持断线重连、数据缓存、采集频率配置; 3. 通信层: