首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue 3:将ref值绑定到对象属性

Vue 3:将ref值绑定到对象属性
EN

Stack Overflow用户
提问于 2022-02-19 22:16:53
回答 2查看 4.7K关注 0票数 1

我遇到了一个问题,我试图使用新的复合API将object属性绑定到Vue中的ref。我期望模板在设置ref值之后用新值重新呈现,但是我将得到一个RefImpl {}。我该怎么解决这个问题?

代码语言:javascript
复制
<template>
  <v-card>
   <v-card-text class="pa-2">
     <div v-for="(social, index) in socials" :key="index">
       <p>{{ social.value }}</p>
     </div>
   </v-card-text>
  </v-card>
</template>

<script>
import { onMounted, ref } from "@vue/composition-api/dist/vue-composition-api";

export default {
  setup() {
    const testVariable = ref(0);

    const socials = [
      {
        value: testVariable,
      }
    ];

    onMounted(() => {
      setTimeout(() => testVariable.value = 100, 1000);
    });

    return {
      socials,
    }
  },
}
</script>
<style scoped></style>
EN

回答 2

Stack Overflow用户

发布于 2022-02-20 18:55:11

你的社会变量不会在模板中撤销内部参考文献。基本上,您必须在模板中使用social.value.value。所以我认为重命名这个变量会更好

代码语言:javascript
复制
   const socials = [
      {
        variable: testVariable,
      }
    ];

这样你就可以做social.variable.value

Vue docs的详细信息:

  • 注意,解包装只适用于顶级属性--对refs的嵌套访问不会被打开:阅读更多
票数 0
EN

Stack Overflow用户

发布于 2022-02-24 21:56:32

看起来您的代码工作:

代码语言:javascript
复制
const { onMounted, ref } = Vue
const app = Vue.createApp({
  setup() {
    const testVariable = ref(0);
    const socials = [{ value: testVariable, }];
    onMounted(() => {
      setTimeout(() => testVariable.value = 100, 1000);
    });
    return { socials, }
  },
})
app.mount('#demo')
代码语言:javascript
复制
<script src="https://unpkg.com/vue@3.2.29/dist/vue.global.prod.js"></script>
<div id="demo">
   <div v-for="(social, index) in socials" :key="index">
     <p>{{ social.value }}</p>
   </div>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71189677

复制
相关文章

相似问题

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