首页 > 其他分享 >010、Vue3+TypeScript基础,通过toRefs和toRef把对象的属性变成响应式引用

010、Vue3+TypeScript基础,通过toRefs和toRef把对象的属性变成响应式引用

时间:2024-08-17 19:27:48浏览次数:11  
标签:TypeScript name person age toRefs toRef Person

1、App.vue代码如下:

<template>
  <div class="app">
    <h1>好好学习,天天向上</h1>
    <Person/>
  </div>
</template>

<script>
// JS或TS
import Person from './view/Person.vue'

export default {
  // App为根组件
  name: 'App',
  // 注册Person组件,注册后,在本单元中可以直接使用Person组件
  components: {Person}
}
</script>

<!--样式 scoped表示仅本单元有效-->
<style scoped>
.app {
  background-color: #ddd;
  box-shadow: 0 0 10px;
  border-radius: 10px;
  padding: 20px;
}
</style>

2、Person.vue代码如下:

<template>
  <div class="person">
    <h2>姓名:{{ person.name }}</h2>
    <h2>年龄:{{ person.age }},{{ nl }}</h2>
    <button @click="changeName">修改名字</button>
    <button @click="changeAge">修改年龄</button>
  </div>
</template>

<script lang="ts" name="Person001" setup>
import {reactive, toRef, toRefs} from 'vue'
// 数据变成响应式
let person = reactive({
  name: '张三',
  age: 18
})
// toRefs是用来将一个对象的全部属性变成响应式的
let {name, age} = toRefs(person)
// toRef是用来将一个对象的某个属性变成响应式的
let nl = toRef(person, 'age')

function changeName() {
  name.value += '~'
}

function changeAge() {
  age.value += 1
}
</script>
<style scoped>
.person {
  background-color: #ddd;
  box-shadow: 0 0 10px;
  border-radius: 10px;
  padding: 20px;

  button {
    margin: 0 5px;
  }
}
</style>

3、效果如下:

 

标签:TypeScript,name,person,age,toRefs,toRef,Person
From: https://www.cnblogs.com/tianpan2019/p/18364851

相关文章