响应式基础
API 选项
本页和指南中后续的许多章节包含针对 Options API 和组合式 API 的不同内容。您的当前偏好是 组合式 API。您可以通过左侧侧边栏顶部的“API 偏好”开关在 API 风格之间切换。
声明响应式状态
ref()
在组合式 API 中,声明响应式状态的建议方法是使用 ref()
函数。
js
import { ref } from 'vue'
const count = ref(0)
ref()
接收一个参数,并返回一个具有 .value
属性的包装在 ref 对象中的值。
js
const count = ref(0)
console.log(count) // { value: 0 }
console.log(count.value) // 0
count.value++
console.log(count.value) // 1
另请参阅: 引用类型
要访问组件模板中的引用,请从组件的 setup()
函数中声明并返回它们。
js
import { ref } from 'vue'
export default {
// `setup` is a special hook dedicated for the Composition API.
setup() {
const count = ref(0)
// expose the ref to the template
return {
count
}
}
}
template
<div>{{ count }}</div>
请注意,在使用模板中的引用时,我们 不需要 添加 .value
。为了方便,当在模板中使用时,引用将自动解包(有一些 注意事项)。
您还可以直接在事件处理程序中更改引用。
template
<button @click="count++">
{{ count }}
</button>
对于更复杂的逻辑,我们可以声明在相同作用域中更改引用的函数,并将它们作为方法与状态一起公开。
js
import { ref } from 'vue'
export default {
setup() {
const count = ref(0)
function increment() {
// .value is needed in JavaScript
count.value++
}
// don't forget to expose the function as well.
return {
count,
increment
}
}
}
公开的方法然后可以用作事件处理程序。
template
<button @click="increment">
{{ count }}
</button>
以下示例在 Codepen 上实时演示,不使用任何构建工具。
<script setup>
通过 setup()
手动公开状态和方法可能会很冗长。幸运的是,在使用 单文件组件 (SFCs) 时可以避免这种情况。我们可以通过使用 <script setup>
来简化使用。
vue
<script setup>
import { ref } from 'vue'
const count = ref(0)
function increment() {
count.value++
}
</script>
<template>
<button @click="increment">
{{ count }}
</button>
</template>
在 `