vue3.0+ts学习心得

:1.使用ref定义变量的时候,在setup中取值用x.value的方式;
当普通变量不用ref,用 a = 'xx' 的形式改变的时候,template上的值不会更新,
使用了ref,变量改变,template更新

例如:

ref定义负责类型的时候 ,在ref后面添加类型
const foo = ref('foo')

vue 提供了关于refde 方法有 

isRef:判断是否是ref对象;

unref:参数是一个 ref,则返回内部值,否则返回参数本身;

例如:
function useFoo (x: number | Ref) {

        const  unwrapped  =  unref(x)  // unwrapped 现在一定是数字类型

}

toRef:可以用来为源响应式对象上的某个 property 新创建一个 ref。然后,ref 可以被传递,它会保持对其源 property 的响应式连接。即把一个对象的的那个属性值赋给一个变量,变量改变的时候,那个对象也相对改变

例如:obj不能为ref对象,但可以是reactive对象

toRefs:将响应式对象转换为普通对象,其中结果对象的每个 property 都是指向原始对象相应 property 的 ref

state的值与stateAsRefs的值对应

customRef:创建一个自定义的 ref,并对其依赖项跟踪和更新触发进行显式控制。它需要一个工厂函数,该函数接收 track 和 trigger 函数作为参数,并且应该返回一个带有 get 和 set 的对象。有对象的代理功能


2、使用setup函数的时候,setup函数没有return出去的变量,template上获取不到。如果在组件上使用了回报  Property "xxx" was accessed during render but is not defined on instance.(属性“xxx”在渲染期间被访问,但未在实例上定义。)

3、在onMounted里面不用this直接调用setup的变量而且,tabList与changeMsg的改变都能直接更新视图。但是当使用tabList = ['xxx'],changeMsg = ['xxx']的时候,视图上changeMsg的部分改变,tabList 不改变;

4、vue的watchEffect方法监听

为了根据响应式状态自动应用重新应用副作用,我们可以使用 watchEffect 函数。它立即执行传入的一个函数,同时响应式追踪其依赖,并在其依赖变更时重新运行该函数。监听ref对象有效,且监听得写在ref对象后面,否则报Cannot read property 'value' of undefined



停止侦听

当 watchEffect 在组件的 setup() 函数或生命周期钩子被调用时,侦听器会被链接到该组件的生命周期,并在组件卸载时自动停止。


5s前还可以出text的改变,5s后text改变也不触发监听、

清除副作用,即在组件数据更新视图前回调函数


5、watch:watch API 与选项式 API this.$watch (以及相应的 watch 选项) 完全等效。watch 需要侦听特定的数据源,并在单独的回调函数中执行副作用。默认情况下,它也是惰性的——即回调仅在侦听源发生变化时被调用。

与 watchEffect 相比,watch 允许我们:

惰性地执行副作用;

更具体地说明应触发侦听器重新运行的状态;

访问被侦听状态的先前值和当前值。

监听一个源的时候

监听多个源的时候


深度监听


停止监听

未完待续。。。

你可能感兴趣的:(vue3.0+ts学习心得)