【Vue3】vue3中的watchEffect使用及其他的API

这篇具有很好参考价值的文章主要介绍了【Vue3】vue3中的watchEffect使用及其他的API。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Vue3】vue3中的watchEffect使用及其他的API

目录

 一,watchEffect

二,生命周期

三,什么是hooks?

四,toRef

 五,其他组合式API

5.1shallowReactive&shallowRef

5.2readonly&shallowReadonly

5.3.toRaw&markRaw

5.4自定义Ref-customRef

​5.5provide$inject

5.6响应式数据的判断

写在最后


 文章来源地址https://www.toymoban.com/news/detail-429414.html

 

 一,watchEffect

1.watch: 既要指明监视的属性,也要指明监视的回调。

2.watchEffect: 不用指明监视哪个属性,监视的回调中用到哪个属性,那就监视哪个属性。

3.watchEffect类似computed但computed注重的计算出来的值(回调函数的返回值),所以必须要写返回值而watchEffect更注重的是过程(回调函数的函数体),所以不用写返回值

4.watchEffect监视的是他所使用到的数据,当它所使用到的数据发生了变化,watchEffect函数就会执行,有点类似computed计算属性,但是computed更注重执行后的返回值

            watchEffect(() => {
                const x = sum.value
                const y = person.job.work1.gongzi
                console.log('watchEffect变化了')
            })

【Vue3】vue3中的watchEffect使用及其他的API

二,生命周期

Vue3提供的组合式API对应关系

beforeCreate() setup
created() setup
beforeMount() onbeforeMount
mounted() ...
beforeUpdate() ...
updated() ...
beforeUnmount() ...
unmounted() ...

【Vue3】vue3中的watchEffect使用及其他的API

三,什么是hooks?

其实hooks的本质就是一个函数,他负责把setup函数中的组合式API进行封装,以便得到更好的复用类似于vue2中的mixin

1.首先创建一个hooks文件

【Vue3】vue3中的watchEffect使用及其他的API

 2.将方法,API封装起来并导出

【Vue3】vue3中的watchEffect使用及其他的API

3.引入hooks并使用封装的方法

【Vue3】vue3中的watchEffect使用及其他的API 

四,toRef

作用: 创建一个 ref 对象,其value值指向另一个对象中的某个属性 语法:.const name = toRef(person,'name') 应用:要将响应式对象中的某个属性单独提供给外部使用时 扩展: toRefstoRef 功能一致,但可以批量处理多个ref对象,语法: toRefs(person)

 

let person = reactive(
                {
                    name:'小明',
                    age:11,
                    sex:'男',
                    job:{
                        j1:{
                            work:"student",
                            salary:1000
                        }
                    }
                }
            )            
return {
                person,
                // 逐个拆分person里面的属性并且交出去
                // name:toRef(person,'name'),
                // age:toRef(person,'age'),
                // salary:toRef(person.job.j1,'salary')
​
                // 将person对象拆分并交出去
                ...toRefs(person)
            }

【Vue3】vue3中的watchEffect使用及其他的API

 【Vue3】vue3中的watchEffect使用及其他的API

 五,其他组合式API

5.1shallowReactive&shallowRef

sharlowReactive: 只处理对象最外层属性的响应式 (浅响应式)

【Vue3】vue3中的watchEffect使用及其他的API shallowRef: 只处理基本数据类型的响应式,不进行对象的响应式处理

【Vue3】vue3中的watchEffect使用及其他的API

 1.什么时候使用? 如果有一个对象数据,结构比较深,但变化时只是外层属性变化 ===> shallowReactive. 如果有一个对象数据,后续功能不会修改该对象中的属性,而是生新的对象来替换 ===> shallowRef

 

 

5.2readonly&shallowReadonly

1.readonly: 让一个响应式数据变为只读的 (深只读)

2.shallowReadonly: 让一个响应式数据变为只读的 (浅只读)

3.应用场景: 不希望数据被修改时

【Vue3】vue3中的watchEffect使用及其他的API

 

5.3.toRaw&markRaw

toRaw 1.作用:将一个由 reactive 生成的响应式对象转为普通对象 使用场景:用于读取响应式对象对应的普通对象,对这个普通对象的所有操作,不会引起页面更新0 markRaw 1.作用: 标记一个对象,使其永远不会再成为响应式对象 2.应用场景:①有些值不应被设置为响应式的,例如复杂的第三方类库等②当渲染具有不可变数据源的大列表时,跳过响应式转换可以提高性能。

5.4自定义Ref-customRef

<template>
    <input type="text" v-model="dataOne">
    <div>{{dataOne}}</div>
</template>
​
<script>
import {ref,customRef} from 'vue'
export default {
    name:'App',
    setup(){
        function myRew(value,delay){
        return customRef((track, trigger)=>{
            let timer
            return {
                get(){
                    console.log('读取数据')
                    track()
                    return value
                },
                set(newValue){
                    clearTimeout(timer)
                   timer = setTimeout(()=>{
                       console.log('修改数据')
                       value = newValue
                       trigger()
                   },delay)
                }
            }
        })
        }
    let dataOne = myRew('hello',666)
        return{
            dataOne,
            myRew
        }
    },
};
</script>
<style>
</style>

​5.5provide$inject

//祖组件

<script>
    import Child from "@/components/Child";
    import {toRefs,reactive,provide} from 'vue'
    export default {
        name: 'App',
        components: {Child},
        setup() {
            let car = reactive({
                name: '奔驰',
                price: '100w'
            })
            provide('car',car)
            return {...toRefs(car)}
        }
    };
</script>
//孙组件

<script>
import {inject,toRefs} from 'vue'
    export default {
        name:'Son',
        setup() {
​
            let car = inject('car')
            return {...toRefs(car)}
        }
    };
</script>

5.6响应式数据的判断

isRef:检查一 个值是否为一个ref对象 isReactive:检查- 个对象是否是由rreactive创建的响应式代理 isReadonly:检查一个对象是否 是由readonly 创建的只读代理 isProxy:检查一个对象是否是由reactive 或者readonly 方法创建的代理

写在最后

博主简介🛌 某神秘组织成员
前端小白,前端优质创作者,阿里云博主,一个开朗的网友
有一个名为山鱼社区的社区,收录许多优秀博主的创作内容
创作不易希望能得到您的支持,您的支持是我创作的动力✌

 

 

 

 

到了这里,关于【Vue3】vue3中的watchEffect使用及其他的API的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • [vue3] watch和watchEffect简记

    watch函数的第一个参数是监听的数据源,可以是: ref和computed创建的响应式数据; reactive创建的响应式对象; getter函数; 多个数据源组成的数组; 注 : 响应式对象的属性需要使用getter监听。 当数据源是响应式对象时,其属性的变更会触发回调函数,但是接收到的 newValue 和

    2024年02月06日
    浏览(8)
  • Vue3学习——computed、watch、watchEffect

    与Vue2.x中computed配置功能一致 写法 注意 监视reactive定义的响应式数据时:oldValue无法正确获取、强制开启了深度监视(deep配置失效)。 监视reactive定义的响应式数据中的某个属性时:deep配置有效。 情况一:监视ref定义的响应式数据 监视ref定义的对象,改变某一个属性时,

    2024年02月22日
    浏览(10)
  • Vue3watch 和 watchEffect

    Vue3watch 和 watchEffect

    计算属性是通过声明性的计算衍生值,然而有些情况,我们需要在状态变化时执行一些\\\"副作用\\\",例如更改DOM,或是根据异步操作的结果去修改另一处的状态。 一般来说,computed主要是涉及计算某些值的时候使用, watch(Effect)函数主要是监听某个状态,当某个状态改变时才会触

    2024年02月20日
    浏览(6)
  • Vue3中watch与watchEffect的区别

    给大家打一个比喻 watch:教导主任叫老师看张三和李四是否在睡觉 watchEffect:教导主任叫老师看班上有谁在睡觉,在睡觉的就报告 1.都能监听响应式数据的变化,不同的是监听数据变化的方式不同 2.watch:要明确指出监视的数据 3.watchEffect:不用明确的指出监视的数据(函数中

    2024年02月21日
    浏览(6)
  • vue3的watchEffect和watch其他参数

    目录 1、watchEffect基本使用 2、watch 与 watchEffect的异同 3、watch其他参数使用 1、watchEffect基本使用 1 回调函数立即调用 2 回调函数依赖的数据都会被监控 3 深度监控 2 、 watch 与 watchEffect的异同 1、 相同点 :都可以对数据进行侦听 2、 不同点 :watchEffect回调函数立即调用、对回调

    2024年01月24日
    浏览(6)
  • vue全家桶进阶之路32:Vue3 WatchEffect和watch 监听

    在 Vue 3 中, watchEffect 是一个用于监听响应式数据变化的 API。它可以在函数内部自动跟踪数据的依赖,并在依赖变化时重新运行函数。 watchEffect  的作用以及各个参数的功能讲解: watchEffect(effect: (onInvalidate: InvalidateCbRegistrator) = void | (() = void) | Promisevoid, options?: WatchEffectOptio

    2023年04月17日
    浏览(8)
  • Vue3的watchEffect的妙用,与watch的区别

    Vue3的watchEffect的妙用,与watch的区别

    在Vue3中,引入了Composition API,其中的 watchEffect() 函数是一个非常强大和灵活的工具,用于处理响应式数据的变化,使得项目更加弹性和灵活。它与 watch 有所不同,本文将介绍 watchEffect() 的定义、特点、与 watch 的区别以及使用时的注意事项。 watchEffect() 函数用于创建一个自动

    2024年02月16日
    浏览(9)
  • Vue3.0 watch和watchEffect监听器:VCA

    在项目中,有时候检测一个变量的值是否反升了变化。通常使用的watch或者使用低效的循环判断。 在次vue中给我们设置了深度监测数据繁盛变化的方法。 1.vue中提供了在watch监听时设置deep:true 就可以实现对对象的深度监听; 2.immediate:true,代表watch里面声明了之后会立马执行han

    2024年02月06日
    浏览(13)
  • vue3中,ref()、reactive()、computed()、watch() 和 watchEffect()的区别

    ref()、reactive()、computed()、watch() 和 watchEffect() 是 Vue 3 中常用的响应式处理函数,它们的主要区别如下: ref():ref() 函数用于将一个普通的 JavaScript 值转化为响应式对象。它返回一个具有 value 属性的对象,我们可以通过访问 value 属性来获取或修改值。当我们对 ref() 返回的对象

    2024年02月22日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包