Hi Dai Gei Ho~ 我是 Winnie ~
在接下来最後三篇文章中,我们将要进入 Vue跌坑主题系列,而这系列会来介绍下 自己之前在学习Vue时所碰过的问题。
就像学骑脚踏车一样,摔过痛过如果留下疤痕,下次在看到就会知道要怎麽避开。
在今天的文章中,要来说说 当我们要来定义资料时 是要先使用 ref 还是 reactive呢?
首先,其实这个没有谁是绝对正确的答案,主要还是需要依照 资料状态 来判断使用 :
假如 今天单纯要定义一个 基本型别 的响应资料,所以很简单的我们可以使用 接受任何型态资料的ref()来包装,再透过.value 来读取值。
范例如下:
const count = ref(0);
const isShow = ref(false);
但如果 资料 的型别为 物件 或是阵列的时候,情况又会不一样了,先让我们来看看以下范例
const person1 = ref({
name: 'winnie'
})
const person2 = reactive({
name: '大侠爱吃汉堡饱'
})
onMounted(()=>{
console.log(person1.value.name) //ref()
console.log(person2.name) //reactive()
})
从以上程序码,我们可以看到 在语法上 ref
需要透过.value
来取物件中的值,而在写法上就需要用到三层了,而 reactive 只需用物件取值的方式,所以在写法只需要两层。
另外我们再来看看 以下另一个范例:
// App.vue
const name = ref('winnie')
const age = ref(24)
const address = ref('桃园')
const setName = ()=>{
name.value = '大侠爱吃汉堡饱'
}
provide('name',name)
provide('age',age)
provide('address',address)
// 略..
// user.vue
const name=inject('name')
const address=inject('address')
const age=inject('age')
// 略..
从上我们可以看到 当 有一笔user资料 要provide 给多个子元件引用时, 如果我们透过ref()
一一来定义,好像会显得元件中的相关资料太分散了,而且在子元件也要呼应来定义,当程序码一多也就容易导致错误,易读性变低。而如果我们改成 reactive来进行包装的话 就可以把相关资料定义在物件之中,在provide出去,不仅很方便,同时还可以减少资料分散的问题。
范例如下:
const userData = reactive({
name :'winnie',
age :24,
address :'桃园',
})
provide('user',userData);
总结以上,针对两个 响应式资料定义的方法中,以我个人选择 ,在 单纯资料状态使用上 我会使用ref
来进行响应式资料包装,而如果是 物件或阵列 的型别 ,我多半会使用 reactive 来进行包装,总归一样还是要看当下 资料状态关联 来选择你要如何使用。
以上就是今天文章,如有问题欢迎大家多多指教,谢谢大家。
-- 小记事 --
今天无意间看了自己六年前FaceBook的动态回顾,只想对当时的我说 幸好我也没辜负高中时的你...
最後附上 高三时 我每天反覆看的影片 陈绮贞 天天想你
<<: 【Day23-降维】相信你的眼睛,在训练模型之前一定要做的事情——利用降维技巧检视资料分群状态:PCA, tSNE, SVD, SOM
>>: Day 23 - 在 PVE 内安装 Windows
大家好,我是乌木白,今天要来和大家来讲解Sass。 Sass? Sass 是一个管理 Css 的语...
什麽是 Code splitting?为什麽要做 Code splitting? 如果你的网站是用 ...
EventChannel EventChannel:用於接收一系列讯息,这些讯息被包装到 Strea...
我把从第一天到现在每天的 Home 目录都放上 GitHub 了,README.md 里面有说明 ...
ELB (Elastic Load Balancer) ELB 是一个托管的 load balanc...