vue3 对象属性赋值, view层不更新

<template>
  <h1>{{ obj }}</h1>
</template>

<script setup>
import { onMounted, reactive } from 'vue'

let obj = reactive({ old: 0 })

const changeObj = () => {
  obj = {
    new: 1
  }
}

onMounted(() => {
  changeObj()
  console.log(obj);
})
</script>

view视图层

image.png

阅读 3.5k
1 个回答
✓ 已被采纳新手上路,请多包涵

解决方案1:
将reactive改为ref, 为正常

<template>
  <h1>{{ obj }}</h1>
</template>

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

let obj = ref({ old: 0 })

const changeObj = () => {
  obj.value = {
    new: 1
  }
}

onMounted(() => {
  changeObj()
  console.log(obj.value)
})
</script>

解决方案2:
外层包裹state

<template>
  <h1>{{ state.obj }}</h1>
</template>

<script setup>
import { onMounted, reactive, watchEffect } from "vue";

let state = reactive({
  obj: {old: 0}
})

const changeObj = () => {
  state.obj = {
    new: 1
  }
}

watchEffect(() => {
  console.log(state.obj)
})
onMounted(() => {
  changeObj()
})
</script>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题