# 数据绑定模型 ## 声明响应式状态 @declaring-reactive-state ### 选项式 API @options-api 选用选项式 API 时,会用 `data` 选项来声明组件的响应式状态。此选项的值应为返回一个对象的函数。Vue 将在创建新组件实例的时候调用此函数,并将函数返回的对象用响应式系统进行包装。此对象的所有顶层属性都会被代理到组件实例 (即方法和生命周期钩子中的 `this`) 上。 示例 [详情]() ::: preview ::: ### 组合式 API @composition-api 选用组合式 API 时,会用 `ref`、`reactive` 来声明组件的响应式状态。 #### ref 在组合式 API 中,推荐使用 `ref()` 函数来声明响应式状态。需要给 `ref` 标注类型,如:`ref()` `ref()` 接收参数,并将其包裹在一个带有 `.value` 属性的 `ref` 对象中返回 **注意**:在模板中使用 ref 时,我们不需要附加 `.value`(为了方便起见,当在模板中使用时,ref 会自动解包)。 示例 [详情]() ::: preview ::: #### reactive 还有另一种声明响应式状态的方式,即使用 reactive() API。与将内部值包装在特殊对象中的 ref 不同,reactive() 将使对象本身具有响应性,还可以使用 `readOnly` 来禁止修改 值得注意的是,reactive() 返回的是一个原始对象的 Proxy,它和原始对象是不相等的 只有代理对象是响应式的,更改原始对象不会触发更新。因此,使用 Vue 的响应式系统的最佳实践是仅使用你声明对象的代理版本。 示例 [详情]() ::: preview ::: #### defineExpose 使用 `