前一篇说到 该怎麽写 data
的资料,找回双向绑定机制 !!!
这边先小小的补充一下 XD
在 Options API
我们 data
里定义到的东西都可以被 Vue 拿来使用,就算是单纯用来做 setInterval
的变数,Vue 也会帮我们做成 双向绑定,不过 Composition API
中,就可以更好的去区分要不要被 Vue 做双向绑定使用,还是单纯变数使用~ 你不可不知!Vue 3 Composition API 使用要诀 | 影片介绍
ref
ref
取值或者对值进行修改都 必须透过 .value
的方式不会对物件或阵列内部的属性变动做监听
import {createApp,ref} from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.esm-browser.min.js'
createApp({
setup() {
const text = ref("ref_text") ;
return {
text
}
}
}).mount('#app')
使用物件
不需要透过 .value
的方式来取值会自动做深层监听(对内部的属性变动做监听)
import {createApp,reactive} from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.esm-browser.min.js'
createApp({
setup() {
const text2 = reactive({
text: "reactive_text"
})
return {
text2
}
}
}).mount('#app')
[注意 !! ] 如果 reactive
使用非物件资料型态,会出现警告
const aa = reactive("reactive错误使用方式:赋予非物件型态")
medium blog【Vue 3】ref 跟 reactive 我该怎麽选!?
作者: Mike
ref & reactive 对内部属性变动监听演示范例
范例中只有reactive
会自动做深层监听(对内部的属性变动做监听)
不知道有没有发现,不管使用 ref
还是 reactive
的方式来宣告,大家的习惯都是使用 const
可是? const
怎麽跟我印象中的使用不同? 下面来介绍一些情境
import {createApp,ref,reactive,onMounted} from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.esm-browser.min.js'
createApp({
setup() {
var student = reactive({
name: '小智智'
}) ;
console.log("改名前 ===> ",student)
onMounted(()=>{
student = {
name: '卡皮丘'
}
console.log("改名後 ===> ",student)
})
return {
student
}
}
}).mount('#app')
当我们使用了 var
来宣告,如果不小心重新更新了整个变数(student),它的架构就会从 Proxy
变成 Object
了,意味着双向绑定的特性被覆盖掉了,画面已经不会跟着数据更新了
否则,我们应当注意操作变更的动作(直接对物件内的内容做操作)
这边我们将范例同样用 var
新增一个博士,不过更新的方式不同,因此不会覆盖掉 Proxy
的架构
var teacher = reactive({
name: '大木黑瓜博士'
});
console.log("博士改名前 ===> ",teacher)
onMounted(()=>{
// 变更物件的值,而不是整个物件
teacher.name = "小黑木瓜博士"
console.log("博士改名後 ===> ",teacher)
})
可是 const
不是常用来宣告常数,不能变更吗?
const student = reactive({
name: '小智智'
});
console.log("改名前 ===> ",student)
onMounted(()=>{
// 整个 Proxy 架构被覆盖掉了~
student = {
name: '卡皮丘'
}
console.log("改名後 ===> ",student)
})
所以我们修改内容就必需透过上面说的 物件.KeyValue="新值"
onMounted(()=>{
student.name = '卡皮丘'
console.log("改名後 ===> ",student)
})
const
禁止更改,但是我们又成功改变内容的值了?
这就需要复习了, const
到底是何方神圣了 ? (XDD
⮩ const 宣告的变数永远无法被重新赋值,但仍可以被改变(阵列、物件等的操作)
喔~ 原来是我记忆的方式错误了,应该这麽记忆才是正确的~
因此,以我自己的理解,这麽想可能比较好懂( 有说错再麻烦纠正下 )
const
是用来帮助我们固定 Proxy
的架构,让我们的保持数据响应,避免造成 var
的问题,不小心更新错误,导致数据无法响应在画面上
所以我们才会看到大家在写法上,基本是以 const
来宣告
HiSKIO | 你不可不知!Vue 3 Composition API 使用要诀 | YouTube
六角学院 | Vue 3 Composition API 精髓掌握 | Youtube Vue3 新手夏令营活动
六角学院 | Composition API 共笔文件
medium blog, Mike |【Vue 3】ref 跟 reactive 我该怎麽选!?
KubeEdge 使用心得 KubeEdge的使用导向应是以"云边协同"、&qu...
今日题目 题目连结:1046. Last Stone Weight 题目主题:Array, Heap...
我们今天要来设定 PBR,我们以 Juniper MX 为例 首先,我们要先决定一个 routing...
环境与工具 Windows 10 21H1 Process Explorer v16.32 Visu...
今天开始正式进入系列文的最後一个章节 - Framework, Architecture and ...