需要在setup中导入ref import {ref} from 'vue' 然后把需要响应式的数据使用ref()包裹起来 在setup中使用响应式数据,需要加.value 语法:let xxx = ref(初始值)。 **返回值:**一个RefImpl的实例对象,简称ref对象或ref,ref对象的value属性是响应式的。 注意点: tS中操作数据需要:xxx.value,但模板中不需要.value,直接使用即可。 何时需要.value?模板中不需要;包裹在响应式对象里面的ref不需要;未包裹的ref需要。 对于let name = ref(‘张三’)来说,name不是响应式的,name.value是响应式的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
<script setup lang="ts" name="Person123"> import {ref} from 'vue' let name = '张三' let age = ref(20) let tel = '13465659898' function showTel(){ alert(tel) } function changeAge(){ age.value += 1 console.log(age) } </script>
<script lang="ts" setup name="Person"> import {ref,reactive,toRefs,toRef} from 'vue'
// 数据 let person = reactive({name:'张三', age:18, gender:'男'}) // 解构,通过toRefs将person对象中的n个属性批量取出,且依然保持响应式的能力 let {name,gender} = toRefs(person) // 通过toRef将person对象中的age属性取出,且依然保持响应式的能力 let age = toRef(person,'age')
// 方法 function changeName(){ name.value += '~' } function changeAge(){ age.value += 1 } function changeGender(){ gender.value = '女' } </script>