详细分析Vue3中的ref(附Demo)

前言

由于新项目涉及Vue3,本着探究问题的本质研究所不会的疑问

1. 基本知识

ref 是 Vue 3 中用于创建响应式数据的函数

  • 接收一个初始值并返回一个包含了该值的响应式引用对象
  • 与 Vue 2.x 中的 data 属性不同,ref 返回的是一个对象,而不是一个直接的值

主要的用法如下:

import { ref } from 'vue';

// 创建一个 ref
const count = ref(0);

// 读取 ref 的值
console.log(count.value); // 输出:0

// 修改 ref 的值
count.value++;
console.log(count.value); // 输出:1

具体的作用如下:

  • 创建响应式数据:通过 ref 创建的数据是响应式的,当数据发生变化时,相关的视图会自动更新

  • 引用数据的访问和修改.value 属性可以访问和修改 ref 的值
    这种方式让数据的访问和修改更加直观和一致

  • 在模板中使用:可以直接在模板中使用 ref 创建的响应式数据,而不需要像 Vue 2.x 中一样通过 this 访问

  • 跟踪数据变化:Vue 3 中的 ref 通过 ES6 的 Proxy 实现,能够跟踪数据的读取和修改,从而实现数据的响应式更新

2. Demo

示例简易的Demo如下:

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    // 创建一个 ref
    const count = ref(0);

    // 定义一个增加 count 的方法
    const increment = () => {
      count.value++;
    };

    // 返回模板中需要用到的数据和方法
    return {
      count,
      increment,
    };
  },
};
</script>

在实战中常用如下:

在这里插入图片描述

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
AWS S3 分段上传是一种将文件分成多个部分上传到S3的方式,这样可以提高上传速度和稳定性。在Vue,我们可以使用AWS SDK for JavaScript来实现S3分段上传。 下面是一个基本的Vue示例,演示如何使用AWS SDK for JavaScript实现S3分段上传。 首先,我们需要安装AWS SDK for JavaScript: ```bash npm install aws-sdk ``` 然后,在Vue组件,我们可以按如下方式导入AWS SDK: ```javascript import AWS from 'aws-sdk'; ``` 接下来,我们需要初始化AWS SDK,并配置S3: ```javascript AWS.config.update({ accessKeyId: 'YOUR_ACCESS_KEY_ID', secretAccessKey: 'YOUR_SECRET_ACCESS_KEY', region: 'YOUR_REGION' }); const s3 = new AWS.S3({ apiVersion: '2006-03-01', params: { Bucket: 'YOUR_BUCKET_NAME' } }); ``` 现在,我们已经配置好了S3,接下来是分段上传的核心: ```javascript async uploadFile() { const file = this.$refs.fileInput.files[0]; const fileSize = file.size; const chunkSize = 1024 * 1024 * 5; // 5MB per chunk const chunks = Math.ceil(fileSize / chunkSize); const params = { Key: file.name, ContentType: file.type, ACL: 'public-read' }; const uploadId = await s3.createMultipartUpload(params).promise(); const promises = []; let uploadedSize = 0; for (let i = 1; i <= chunks; i++) { const start = (i - 1) * chunkSize; const end = Math.min(i * chunkSize, fileSize); const chunk = file.slice(start, end); const partParams = { Body: chunk, Key: file.name, PartNumber: i, UploadId: uploadId.UploadId }; promises.push(s3.uploadPart(partParams).promise().then(data => { uploadedSize += chunk.size; console.log(`Uploaded ${uploadedSize} bytes`); return { ETag: data.ETag, PartNumber: i }; })); } const parts = await Promise.all(promises); const completeParams = { Key: file.name, MultipartUpload: { Parts: parts }, UploadId: uploadId.UploadId }; await s3.completeMultipartUpload(completeParams).promise(); console.log('Upload complete'); } ``` 这里,我们首先计算出文件的大小和每个块的大小。然后,我们创建一个上传任务,并将文件分成多个块。对于每个块,我们将其上传到S3,并记录上传的总大小。上传完成后,我们将所有块合并为一个文件,完成上传。 最后,我们需要在Vue模板添加一个文件输入框和一个上传按钮: ```html <template> <div> <input type="file" ref="fileInput"> <button @click="uploadFile">Upload</button> </div> </template> ``` 这就是一个基本的Vue示例,演示如何使用AWS SDK for JavaScript实现S3分段上传。当然,具体的实现方式还要根据自己的需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码农研究僧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值