Skip to content

动态对象

vue
<template>
  <div>{{ object }}</div>
  <button @click="change">change</button>
</template>

<script lang="ts" setup>
const object = { name: 'John', age: 30, city: 'New York' }
const change = () => {
  object.name = 'dd'
  console.log(object)
}
</script>
<style scoped></style>

定义如上代码,点击change事件后虽然对象的属性改变了但是页面的内容并没有改变

ref

vue
<template>
  <div>{{ object }}</div>
  <button @click="change">change</button>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
const Obj = {
  name:String,
  city:String
}
const object = ref<Obj>({ name: 'John', age: 30, city: 'New York' })
const change = () => {
  object.value.name = 'dd'
  console.log(object)
}
</script>
<style scoped></style>

ref需要使用 .value 访问或修改值

reactive

vue
<template>
  <div>
    <form>
      <input v-model="object.name" type="text" />
      <input v-model="object.city" type="text" />
      <button @click.prevent="change">Change</button>
    </form>
  </div>
</template>

<script lang="ts" setup>
import { reactive } from 'vue'
const Obj = {
  name:String,
  city:String
}
const object = reactive<Obj>({
  name: 'aa',
  city: 'beijing'
});
const change = () => {
  object.name = 'dd'
  console.log(object)
}
</script>
<style scoped></style>