首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过引用传递Vue3 Ref变量?(以及缺少的“全局”变量是什么)

如何通过引用传递Vue3 Ref变量?(以及缺少的“全局”变量是什么)
EN

Stack Overflow用户
提问于 2022-09-18 18:37:53
回答 1查看 145关注 0票数 0

我编写了以下类星体/Vue3组件(TemperatureOutside.vue)

代码语言:javascript
复制
<template>
  <div class='text-large-1 text-weight-bold'>
    {{ temperature }}°
  </div>
</template>

<script setup lang='ts'>
import { ref } from 'vue';
import { setupMqtt } from './mqtt';

const temperature = ref(-100)
setupMqtt('temperature', temperature)
</script>

setupMqttmqtt.ts中定义

代码语言:javascript
复制
import { connect } from 'mqtt'
import { Ref } from 'vue'

export const setupMqtt = (topic: string, data: Ref): void => {
    const client = connect('mqtt://192.168.10.2:1884')
    const topics = [`dash/${topic}`]
    // removed some setup lines that do not matter
    client.on('message', function (topic: string, message: Buffer) {
      // the key line is below
      data.value = JSON.parse(message.toString())
    })
}

我想传递data,并对调用组件中其.value的更改做出反应。

我的问题是:当我注释掉setupMqtt('temperature', temperature)时,程序运行得很好。如果它存在,我将在控制台上得到以下破坏错误:

代码语言:javascript
复制
vue-router.mjs:35 [Vue Router warn]: uncaught error during route navigation:
warn @ vue-router.mjs:35
triggerError @ vue-router.mjs:3439
(anonymous) @ vue-router.mjs:3163
Promise.catch (async)
pushWithRedirect @ vue-router.mjs:3157
push @ vue-router.mjs:3089
install @ vue-router.mjs:3520
use @ runtime-core.esm-bundler.js:4349
start @ client-entry.js?t=1663525498443:63
Promise.then (async)
(anonymous) @ client-entry.js?t=1663525498443:82

vue-router.mjs:3441 ReferenceError: global is not defined
    at node_modules/readable-stream/lib/_stream_readable.js (_stream_readable.js:48:21)
    at __require (chunk-OL3AADLO.js?v=fff356dc:9:50)
    at node_modules/readable-stream/readable-browser.js (readable-browser.js:1:28)
    at __require (chunk-OL3AADLO.js?v=fff356dc:9:50)
    at node_modules/mqtt/lib/store.js (store.js:8:18)
    at __require (chunk-OL3AADLO.js?v=fff356dc:9:50)
    at node_modules/mqtt/lib/client.js (client.js:7:15)
    at __require (chunk-OL3AADLO.js?v=fff356dc:9:50)
    at node_modules/mqtt/lib/connect/index.js (index.js:3:20)
    at __require (chunk-OL3AADLO.js?v=fff356dc:9:50)
triggerError @ vue-router.mjs:3441
(anonymous) @ vue-router.mjs:3163
Promise.catch (async)
pushWithRedirect @ vue-router.mjs:3157
push @ vue-router.mjs:3089
install @ vue-router.mjs:3520
use @ runtime-core.esm-bundler.js:4349
start @ client-entry.js?t=1663525498443:63
Promise.then (async)
(anonymous) @ client-entry.js?t=1663525498443:82

vue-router.mjs:35 [Vue Router warn]: Unexpected error when starting the router: ReferenceError: global is not defined
    at node_modules/readable-stream/lib/_stream_readable.js (_stream_readable.js:48:21)
    at __require (chunk-OL3AADLO.js?v=fff356dc:9:50)
    at node_modules/readable-stream/readable-browser.js (readable-browser.js:1:28)
    at __require (chunk-OL3AADLO.js?v=fff356dc:9:50)
    at node_modules/mqtt/lib/store.js (store.js:8:18)
    at __require (chunk-OL3AADLO.js?v=fff356dc:9:50)
    at node_modules/mqtt/lib/client.js (client.js:7:15)
    at __require (chunk-OL3AADLO.js?v=fff356dc:9:50)
    at node_modules/mqtt/lib/connect/index.js (index.js:3:20)
    at __require (chunk-OL3AADLO.js?v=fff356dc:9:50)

我无法理解所引用的global变量是什么,我担心我通过引用传递的尝试在某个地方失败了。

EN

回答 1

Stack Overflow用户

发布于 2022-09-18 18:52:09

ref()接受参数并返回包装在具有.value属性的ref对象中的参数。ref的.value属性是反应性的。

您能否尝试更改setupMqtt()文件中的TemperatureOutside.vue函数:

代码语言:javascript
复制
const temperature = ref(-100);
setupMqtt('temperature', temperature.value);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73765501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档