VUE2语法--toRefs与toRef用法

本文介绍了Vue3中的ref和reactive功能,以及它们的子函数toRefs和toRef的用法。toRefs用于提取部分响应式数据,如果目标字段不存在则不提供默认值;而toRef可以单独取出reactive中的单条数据,其值的变化不会影响原reactive对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、功能概述

ref和reactive能够定义响应式的数据,当我们通过reactive定义了一个对象或者数组数据的时候,如果我们只希望这个对象或者数组中指定的数据响应,其他的不响应。这个时候我们就可以使用toRefs和toRef实现局部数据的响应。

toRefs是toRef的升级版本

如果不会使用ref和reactive数据响应,参照如下博客:

https://blog.youkuaiyun.com/tangshiyilang/article/details/134701103

两者的不同点在于:toRefs取的字段如果不存在,不会给默认值,而toRef取的字段如果不存在会给默认值。

两者的相同点子在于:当头toRefs和toRef值发生变化的时候,reactive中的值不会同步。

2、toRefs用法

说明1const{name}=toRefs(testData);

toRefs如果从testData中取name,如果name不存在,不会给默认值。

通过toRefs导出的值,可以直接使用原名称获取如:{{name}}

说明2下面的案例中从testData中取了两个值作为响应式数据,name和name1,其中name1是不存在,在页面中不做任何的显示。

说明3通过toRefs取出的值name如果发生了变化,testData中的name不发生变化。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
  <div id="app">{{name}}--{{name1}}</div>
  <script type="module">
    const app=Vue.createApp({
       //创建setup
       setup(props,context){
        const {reactive,toRefs}=Vue;//从vue中引入toRefs和reactive
        //创建reactive设置响应式数据
        let testData=reactive({name:'小春',sex:"男"});
        //从testData中取出name的值响应,sex不参与响应
        const{name,name1}=toRefs(testData);
         return {name,name1}
        }
    });
    //vue实例只作用于app这个DOM节点中
    const vm=app.mount('#app');//viewModel是组件帮助我们完成的
  </script>
</body>
</html>

输出结果:

3d0a2d5402d6490eb2842a3bb3fefef6.png3、toRef的用法

说明1toRef从reactive中引出单条数据

说明2通过toRef取出的值name如果发生了变化,testData中的name不发生变化。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
  <div id="app">{{name}}</div>
  <script type="module">
    const app=Vue.createApp({

       //创建setup
       setup(props,context){
        const {reactive,toRef}=Vue;//从vue中引入toRef和reactive
        //创建reactive设置响应式数据
        let testData=reactive({name:'小春',sex:"男"});
        //从testData中取出name的值响应,sex不参与响应
        const name=toRef(testData,'name');
         return {name}
        }
    });
    //vue实例只作用于app这个DOM节点中
    const vm=app.mount('#app');//viewModel是组件帮助我们完成的
  </script>
</body>
</html>

输出结果:

40730c9a4d874e61bcfad0248ff56081.png

 

 

### 正确安装和使用 `@vue/composition-api` 插件 要在 Vue 项目中正确集成和配置 `@vue/composition-api` 插件,需按照以下方法操作。 #### 安装插件 为了在 Vue 2 项目中引入 Composition API 的功能,首先需要安装 `@vue/composition-api` 插件。这可以通过 npm 或 yarn 来完成。具体命令如下: ```bash npm install @vue/composition-api --save ``` 或者如果使用的是 Yarn,则可以执行以下命令: ```bash yarn add @vue/composition-api ``` 此过程会将该插件作为依赖项添加到项目的 package.json 文件中[^2]。 #### 配置插件 一旦成功安装了 `@vue/composition-api`,就需要将其注册为全局插件以便在整个应用中可用。通常可以在入口文件(如 main.js)中进行设置。以下是具体的实现方式: ```javascript import Vue from 'vue'; import VueCompositionAPI from '@vue/composition-api'; // 使用 plugin 方法来启用 composition api 功能 Vue.use(VueCompositionAPI); const app = new Vue({ render: h => h(App), }).$mount('#app'); ``` 上述代码片段展示了如何通过调用 `Vue.use()` 函数来激活 `@vue/composition-api` 插件的功能[^1]。 #### 创建基于 Composition API 的组件 创建一个简单的 Vue 组件并利用 Composition API 提供的能力是非常直观的过程。下面是一个基本的例子展示如何定义这样的组件以及初始化数据状态。 ```html <template> <div>{{ obj.foo }} - {{ count }}</div> </template> <script> import { defineComponent, ref, reactive } from '@vue/composition-api' export default defineComponent({ setup() { const count = ref(0); const obj = reactive({ foo: 'bar' }); return { count, obj }; } }); </script> ``` 在这个例子中,我们导入了必要的工具函数 `ref` 和 `reactive` 并用于声明响应式的变量 `count` 和对象 `obj`。这些都将在模板部分被渲染出来[^3][^4]。 #### 总结 综上所述,要在一个现有的 Vue 2.x 应用程序里加入 `@vue/composition-api` 支持,主要分为三个步骤:首先是安装对应的包;其次是通过 `Vue.use()` 注册这个插件使其生效;最后就是在实际开发过程中采用新的语法结构编写更加灵活高效的业务逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雾林小妖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值