vue3 ref,toRef,toRefs的区别

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。vue3 ref,toRef,toRefs的区别,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

ref 函数可以将对象里面的属性值变成响应式的数据,修改响应式数据,是不会影响到源数据,但是视图层上的数据会被更新

代码案例如下

<template>
<h>{{name1}}</h>
    <button @click="click">点击</button>
</template>

<script>
    import {reactive,toRefs,ref,toRef} from "vue"
    import test1 from "./Test1.vue"
    export default {
        name: "Test2",
        setup(){
            let name="yu";
            const name1=ref(name)

            const click=()=>{
                name1.value="zhang"
                console.log(name)
                console.log(name1)
            }


            return{
                name1,
                click
            }
        }


    }
</script>

toRef 函数会与源数据交互,修改响应式数据会造成源数据的修改,但是他的修改不会造成视图层数据的更新。

<template>    <div style="text-align: center;padding-left: 50px">        <h>{{name1}}</h>        <br>        <br>        <button @click="click">点击</button>    </div></template><script>    import {reactive,toRefs,ref,toRef} from "vue"    import test1 from "./Test1.vue"    export default {        name: "Test2",        setup(){            const name={                name1:"hh"            }            const name1=toRef(name,"name1")            const click=()=>{                name1.value="zhang"                console.log(name.name1)                console.log(name1.value)            }            return{                name1,                click            }        }    }</script>

toRefs 函数与原始数据相交互,修改响应式数据会影响到源数据,但是不会更新视图层。
toRefs 函数还可以与其他响应式数据相交互,更加方便处理视图层数据。

<template>
    <div style="text-align: center;padding-left: 50px">
        <h>{{name1.name2}}</h>
        <br>
        <br>
        <button @click="click">点击</button>
    </div>

</template>

<script>
    import {reactive,toRefs,ref,toRef} from "vue"
    import test1 from "./Test1.vue"
    export default {
        name: "Test2",
        setup(){
            const name={
                name1:"hh",
                name2:"jj"
            }
            const name1=toRefs(name)

            const click=()=>{
                name1.name2.value="kk"
                console.log(name.name2)
                console.log(name1.name2.value)
            }


            return{
                name1,
                click
            }
        }


    }
</script>

 toRefs配合reactive可以实现修改响应数据会更新视图层

<template>
    <div style="text-align: center;padding-left: 50px">
        <h>{{name2}}</h>
        <br>
        <br>
        <button @click="click">点击</button>
    </div>

</template>

<script>
    import {reactive,toRefs,ref,toRef} from "vue"
    import test1 from "./Test1.vue"
    export default {
        name: "Test2",
        setup(){
            const name=reactive({
                name2:"hh"
            })

            const click=()=>{
                name.name2="k"
            }


            return{
               ...toRefs(name),
                click
            }
        }


    }
</script>

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/197070.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!