vue3核心语法
ref和reactive的使用
ref
ref能够创建基本类型的响应式数据,同时ref还能够创建对象类型的响应式数据
获取ref创建的响应式数据需要使用.value进行获取:name.value


reactive
- reactive能够创建对象类型的响应式数据,不能够创建基本类型的响应式数据
- 获取reactive创建的响应式数据不需要使用.value直接能够获取

ref和reactive的区别
- ref创建的变量必须使用.value(可以使用volar 插件自动添加.value)。
- reactive重新分配一个新对象,会失去响应式(可以使用Object.assign去整体替换)。
- 如示例,想要更改上述reactive中定义的car需要使用Object.assign

- 如示例,想要更改上述reactive中定义的car需要使用Object.assign
使用原则
- 若需要一个基本类型的响应式数据,必须使用ref。
- 若需要一个响应式对象,层级不深,ref、reactive都可以。
- 若需要一个响应式对象,且层级较深或者表单提交数据,推荐使用reactive。
computed计算属性
computed计算属性的两种使用形式
这么定义的fullName是一个计算属性,且是只读的
1
2
3
4
5let firstName = ref('zhang')
let lastName = ref('san')
let fullName = computed(()=>{
return firstName.value.slice(0,1).toUpperCase() + firstName.value.slice(1) + '-' + lastName.value
})这么定义的fullName是一个计算属性,可读可写(下方代码中当点击changeFullName方法时,会将fullName进行赋值,通过computed中的set(val)将值进行重新赋予给最开始定义的数据中)
1
2
3
4
5
6
7
8
9
10
11
12let fullName = computed({
get(){
return firstName.value.slice(e,1).toUppercase() + firstName.value.slice(1) + '-' + lastName.value
},
set(val){
const [str1,str2] = val.split('-')
firstName.value = str1
lastName.value = str2
}
function changeFullName(){
fullName.value = 'li-si'
}
watch属性
watch能监视4中情况
- 作用:监视数据的变化(和Vue2中的watch作用一致)
- 特点:Vue3中的watch只能监视以下四种数据:
1、ref定义的数据。2、reactive定义的数据。3、函数返回一个值。4、一个包含上述内容的数组。
*情况一
- 监视ref定义的【基本类型】数据:直接些数据名即可,监视的是其value值的改变。

*情况二
- 监视ref定义的【对象类型】数据:直接写数据名,监视的是对象的【地址值],若想监视对象内部的数据,要手动开启深度监视。
- 注意:
1、若修改的是ref定义的对象中的属性,newalue和oldValue都是新值,因为它们是同一个对象。2、若修改整个ref定义的对象,newValue 是新值,oldValue 是旧值,因为不是同一个对象了。
*情况三
- 监视reactive定义的【对象类型】数据,且默认开启了深度监视。

*情况四
- 监视ref或reactive定义的【对象类型】数据中的某个属性注意点如下:
- 1、若该属性值不是【对象类型】,需要写成函数形式。
- 2、若该属性值是依然是【对象类型】,可直接编写,也可写成函数,建议写成函数。
- 结论:监视的要是对象里的属性,那么最好写函数式,注意点:若是对象监视的是地址值,需要关注对象内部,需要手动开启深度监视。

watchEffect属性
- 立即运行一个函数,同时响应式地追踪其依赖,并在依赖更改时重新执行该函数。
- watch对比watchEffect
- 都能监听响应式数据的变化,不同的是监听数据变化的方式不同
- watch要明确指出监视的数据
- watchEffect不用明确指出监视的数据(函数中用到哪些属性,那就监视哪些属性)

标签的ref属性
- 作用:用于注册模板引用。
- 用于普通DOM标签上,获取的是DOM节点。
- 用于组件标签上,获取的是组件实力对象。

引入ts并使用
- 可以是定义一个接口类型、或泛类型的具体属性

Props
- 一个组件需要显式声明它所接受的 props,这样 Vue 才能知道外部传入的哪些是 props。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 煙爲's Notes!





