1、使用前必需引入 ref
1 2 3 4 5 | <script setup> import { ref } from 'vue' </script> |
2、定义语法:
1 2 3 4 5 | const a= ref (0) const b = ref ( null ) const c = ref ({}) const d = ref ( false ) const e = ref ([]) |
3、取值、赋值方法:
1 2 3 | const num = ref (0) num.value = 20 // 赋值 const a = num.value // 取值 |
4、ref在模板中解包的几种场景:
a) ref在模板中作为顶层属性被访问时,会被自动解包,不需要使用.value取值,如:
1 2 3 4 5 6 7 8 9 10 11 | <template> <view>{{a}}</view> </template> <script setup> import { ref } from 'vue' const a = ref (5) </script> |
b) 不是顶层属性时,且不参与混合语法,自动解包:
本例中 object.foo 属于子节点,所以不是顶层属性,但是它能正常解包
1 2 3 4 5 6 7 8 9 10 11 | <template> <view>{{ object .foo}}</view> </template> <script setup> import { ref } from 'vue' const object = { foo: ref (5) } </script> |
c) 不是顶层属性时,且参与混合语法,无法解包:
在本例中object.foo不是顶层属性,且它参与了计算,所以无法正常解包
1 2 3 4 5 6 7 8 9 10 11 12 | <template> <!-- 这里混合参与计算,打印结果为:[ object Object]1 --> <view>{{ object .foo+1}}</view> </template> <script setup> import { ref } from 'vue' const object = { foo: ref (5) } </script> |
在上例中,如果想正常显示,可以加上.value方式,如:{{object.foo.value+1}}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构