vue.js 如何将Ref设置为Reactive属性参数

dzjeubhm  于 2023-06-24  发布在  Vue.js
关注(0)|答案(1)|浏览(132)

当我在阅读这个链接中提到的Additional Ref Unwrapping Details时,我想实现下面发布的示例,以区分普通refref之间的差异,当传递给reactive对象的属性时。
对于下面提到的代码,我想知道以下内容:
1-为什么count设置为0时console.log("count:",count)显示对象
2-为什么当count分别为1和2时,console.log("count:",count)显示的值等于1和2。
3-为什么console.log("state:",state)显示的值等于count的值为1、2和3时的相同对象

编码

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <HelloWorld msg="Welcome to Your Vue.js App"/>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'
import { ref,reactive } from 'vue'
export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

<script setup>
let count = ref(0)
const state = reactive({count})

console.log("------------count = 0----------------");
console.log("count:",count)
console.log("count.value:",count.value);
console.log("state:",state)
console.log("------------count = 1----------------");
count = 1
console.log("count:",count);
console.log("count.value:",count.value);
console.log("state:",state);
console.log("------------count = 2----------------");
count = 2
console.log("count:",count);
console.log("count.value:",count.value);
console.log("state:",state);
</script>

结果

5gfr0r5j

5gfr0r5j1#

您将值1和2赋给变量count,之后它不再包含ref,而是值1或2。
所以你不用

count = 1

如果你想继续和裁判一起工作,就应该

count.value = 1

因此,不要覆盖ref,而是覆盖ref的值,一切都按预期工作。
state对象中,已将属性count赋给count变量中的初始ref。覆盖变量不会改变存储在state中的值,它仍然指向初始ref。

相关问题