Vue 3:如何访问组件函数中的设置变量

2023-11-21

考虑以下使用 Vue 3 中的组合 API 的简单示例。我试图拥有一个实例test在我的组件的功能中可用。

<script>
import { defineComponent, ref, onMounted } from 'vue'

export default defineComponent({
  name: 'Test',
  setup(){
    let test = ref()
    
    onMounted(() => {
      doSomething()
    })

    return{
      test,
      doSomething
    }
  }
})

function doSomething(){
  console.log(test) //<-- undefined
  console.log(this.test) //<-- undefined
}
</script>

我如何访问test inside doSomething()?我的理解是任何返回的东西setup()应该在整个组件中都可用,就像data()来自选项 API 的属性。


你必须通过ref作为参数

<script>
import { defineComponent, ref, onMounted } from 'vue'

export default defineComponent({
  name: 'Test',
  setup () {
    let test = ref(null)

    onMounted(() => {
      doSomething(test.value)
    })

    return {
      test,
      doSomething
    }
  }
})

function doSomething (param) {
  console.log(param); // null
}
</script>

另一种方法:

// functions.js
import { ref } from 'vue'
export let test = ref(null)
// vue-file
<script>
import { defineComponent, ref, onMounted } from 'vue'
import { test } from '../utils/functions.js'

export default defineComponent({
  name: 'Test',
  setup () {

    onMounted(() => {
      doSomething(test)
    })

    return {
      test,
      doSomething
    }
  }
})

function doSomething (param) {
  console.log(test.value); // <-- instant access
  console.log(param.value); // <-- import via parameter
}
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue 3:如何访问组件函数中的设置变量 的相关文章

随机推荐

  • 上传文件时获取 API 和 multer 错误

    我正在尝试使用 fetch API 将文件上传到 node js 服务器 如果与此有关 我正在使用 github 的 pollyfill https github com github fetch 请求是这样完成的 const data n
  • keras AssertionError:类型“experimentalOptimizer”的重复注册

    我正在尝试为 CartPole v1 游戏构建深度 Q 学习代码 但是我遇到了断言错误 AssertionError Duplicate registrations for type experimentalOptimizer 一些堆栈跟踪
  • Select2 改变容器位置

    如何调整 Select2 容器的位置 以便搜索框位于原始选择元素的正上方 如本网站所示 http www jobnisit com en 在我看来 它在用户界面方面看起来更干净 诗 抱歉 我现在无法发布图片 有两种方法可以做到这一点 1 使
  • 将 Chrome 浏览器打包到 HTML5 Android 应用程序中

    我们正在开发几个基于 Sencha 框架的 HTML5 应用程序 并考虑将它们打包到 PhoneGap 等应用程序中 然而 即使你将这些打包到应用程序中 我假设你仍然需要处理 Android 碎片问题 因为各个制造商对浏览器进行了奇怪的修改
  • 应用程序在后台时 iPhone 手电筒不工作

    您好 我正在使用基于位置的应用程序 并且想要在后台使用 iPhone 相机手电筒 不幸的是 手电筒仅在前台工作 即使代码正在执行 它也会自动关闭后台的闪光灯 我使用的代码仅在前台运行 import
  • 创建交互式弹出对话框

    我想知道是否可以使用shiny 和shinyBS 创建一个交互式弹出对话框 例如 我有一个字符串 我想更改它 并且在执行之前会出现一个对话框 询问我是否真的要更改它 如果我说 是 它就会执行 否则它会放弃更改 这是我的尝试 但我发现了两个问
  • MongoError:拓扑已关闭,请连接

    我是一名前端开发人员 试图在新的 Next 项目中拓展自己的视野 第一次学习 Node Mongo 和 GraphQL 的服务器端 Apollo 对我来说是最简单的入门方式 因为我已经在之前的项目中使用过客户端 Apollo 我一直在关注官
  • 为什么我的 C 程序中出现 ws2_32.dll 的链接器错误?

    我正在 Visual Studio 2010 中编写我的程序 我无法链接名为ws2 32 dll和我的项目 谁能告诉我该怎么做 通常您不会链接到 ws2 32 dlldirectly而是 WS2 32 Lib 您可以在 Windows SD
  • StringBuilder 和 StringBuffer 的区别

    之间的主要区别是什么StringBuffer and StringBuilder 在决定其中任何一项时是否存在任何性能问题 StringBuffer是同步的 StringBuilder is not
  • Android xml布局中的视图限制是多少

    任何人都知道在 android 布局 XML 中 可以嵌入到 XML 中的最大视图限制是多少 有限制吗 严格来说 限制 是80 当布局中有太多视图时 Lint 会报告以下内容 AndroidLintTooManyViews 描述 布局有太多
  • 从当前光标位置创建范围 Word 2010 VBA

    我有一个 docm带有用户表单的文档 在用户表单上 我有一个按钮 需要在文档中最后一个已知的光标位置插入一些内容 一些文本 用于启动 为此 我想创建一个范围 我怎样才能获得这个范围的起始位置 Selection是文档中的当前位置 Selec
  • 如何将 UIScrollView 嵌套在 UIScrollView 中,以便用户可以滚动内部 UIScrollView?

    我还没有尝试过 但我假设一旦我知道用户想要在子滚动视图中滚动 我就必须禁用父滚动视图的滚动 对吧 两个滚动视图都是水平滚动的 如何暂时禁用父级的滚动检测 或者还有其他办法吗 UIScrollView 有一个属性叫做scrollEnabled
  • 在 Bootstrap 4 的较小屏幕上隐藏一列[重复]

    这个问题在这里已经有答案了 这是 Bootstrap 4 总是让我感到困惑的一个领域 假设你有这样的布局 div class container fluid div class row div class col sm 3 col sm 3
  • 不使用递归如何抛出堆栈溢出异常?

    不使用递归如何抛出堆栈溢出异常 由于没有其他人提到过 throw new System StackOverflowException 您可以在测试或进行故障注入时执行此操作
  • VS 插件将光标下的标识符的完整类型名称复制到剪贴板中[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有一个 Visual Studio 插件可以将光标下的标识符的完整类型名称复制到剪贴板中 请不要将我链接到 VS 2010 复制类 接口的完整类
  • 如何从一个具有依赖性的批处理文件启动多个批处理文件?

    我想运行一个批处理文件 启动其他批处理文件 我看了这里发布的类似问题 如何在一个 BAT 文件中运行多个 BAT 文件 我按照这个例子 特别是最后一个建议 并且它起作用了 部分 它确实启动了我需要的批处理文件 但是 为了使应用程序正常运行
  • 为什么 JavaFX 中没有 ObservableQueue?

    为什么JavaFX中没有ObservableQueue 如果我们查看 FXCollections 的 Java 9 文档 只是为了看看与 8 相比是否有任何更改 我们会看到用于创建 Observable 集 列表和映射的静态辅助方法 还有一
  • SVG 矩形忽略高度?

    这里有一个工作演示的一个矩形 我想将 height 属性移至 css好吧 它不起作用 让我一片空白 它发生在 Firefox 和 Chrome 中 它有不同的名字吗 我不明白为什么我不能使用 css 文件 填充颜 色有效 工作示例 css
  • pip install - 连接被同行重置

    当我尝试使用 pip 安装 lxml 时 出现异常 连接被对等方重置 Downloading unpacking lxml Downloading lxml 3 0 1 tar gz 3 2Mb 643Kb downloaded Excep
  • Vue 3:如何访问组件函数中的设置变量

    考虑以下使用 Vue 3 中的组合 API 的简单示例 我试图拥有一个实例test在我的组件的功能中可用