.value
的形式才能修改其值。属性的值一旦被修改就会触发模板的重新渲染以显示最新的值。.value
。.value
例如:
<template>
<div>{{ count }}</div>
</template>
<script>
import { ref } from 'vue'
export default {
setup(props) {
const count = ref(0)
// 暴露给 template 的属性,可以直接在 template 中使用
return {
count
}
}
}
</script>
如果将 setup 写在 <script> 标签里,则该标签里的脚本都是执行在 setup 里的,并且里面声明数据均会默认地暴露给 template,在 template 中使用时无需加 .value
。
例如:
<template>
<div>{{ name }} : {{ state.age }}</div>
</template>
<script setup>
import { ref } from 'vue'
// 为基本数据类型添加响应式状态
const name = ref('Marry')
// 为复杂数据类型添加响应式状态
const state = ref({
age: 18
})
// 打印name的值
console.log(name.value)
// 打印count的值
console.log(state.value.age)
</script>
.value
。例如:
<template>
<div>{{ obj.count }}</div>
</template>
<script setup>
import { reactive } from 'vue'
const obj = reactive({
count: 0
})
// 使用 reactive 定义的属性可以直接使用,不需要加 .value
console.log(state.count)
</script>
.value
。例如:在 setup 中使用父组件传递的 props 数据时,要引用 props 的某个属性,且要保持响应式连接,就必须使用 toRef。
<template>
<div>{{ myTitle }}</div>
</template>
<script>
import { defineComponent, toRef } from 'vue'
export default defineComponent({
props: [title],
setup (props) {
// 创建变量myTitle
const myTitle = toRef(props, 'title')
console.log(myTitle.value)
return {
myTitle
}
}
})
</script>
.value
。<template>
<div>{{ myTitle }}</div>
</template>
<script>
import { defineComponent, toRefs } from 'vue'
export default defineComponent({
props: [title],
setup (props) {
// toRefs 默认使用了解构赋值,创建了变量 myTitle
const { myTitle } = toRefs(props)
console.log(myTitle.value)
return {
myTitle
}
}
})
</script>