uni-app vue3 使用笔记

1.弹窗、加载、请求接口

<template>
  <view>
    <view class="tn-type-primary_bg" v-if="item.roleId==16" @click="confirmMarker(item.uid)">
      指定营销员
    </view>
  </view>

</template>

<script setup lang="ts">
import {marker} from "@/api/mall_home/mall_home"
//确认指定营销员
const confirmMarker = async (uid) => {
  uni.showModal({
    title: '提示',
    content: '是否确认指定该用户为【营销员】',
    confirmText: '确定',
    cancelText: '取消',
    success: function (res) {
      if (res.confirm) {
        let data = {uid: uid}
        uni.showLoading({title: '正在提交...'})
        marker(data).then((res) => {
          uni.hideLoading()
          if (res.code == 200) {
            uni.showToast({title: '提交成功', icon: 'success'});
          }
        });
      }
    }
  });
}
</script>
//门店指定营销员
export const marker = (data) =>
    Request({
        url: `mode2/wechat/store/marker`,
        method: 'GET',
        data,
    });
</script>

2.vue3 详解ref

在 Vue 3 中,ref 是一个非常重要的 API,用于创建响应式数据。以下将从多个方面详细介绍 ref

1. 基本概念

ref 是一个函数,用于创建一个响应式的引用对象。它接受一个初始值作为参数,并返回一个包含该值的响应式对象。当这个值发生变化时,依赖于它的 DOM 元素或计算属性等会自动更新。

2. 基本使用

2.1 创建 ref 对象
import { ref } from 'vue';

// 创建一个初始值为 0 的 ref 对象
const count = ref(0);

// 创建一个初始值为字符串的 ref 对象
const message = ref('Hello, Vue 3!');

// 创建一个初始值为对象的 ref 对象
const person = ref({ name: 'John', age: 30 });
2.2 访问和修改 ref 的值

在 JavaScript 中,访问和修改 ref 对象的值需要使用 .value 属性:

// 访问 count 的值
console.log(count.value); // 输出: 0

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

在模板中,可以直接使用 ref 对象,无需使用 .value

<template>
  <div>
    <!-- 直接使用 count -->
    <p>{{ count }}</p> 
    <button @click="increment">Increment</button>
  </div>
</template>

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

const count = ref(0);

const increment = () => {
  count.value++;
};
</script>

3. 响应式原理

ref 内部使用了 JavaScript 的 Object.defineProperty 或 Proxy(取决于运行环境)来实现响应式。当 ref 的值发生变化时,Vue 会自动追踪到这个变化,并通知所有依赖于该 ref 的地方进行更新。

4. 与 reactive 的区别

  • ref:主要用于创建基本数据类型(如数字、字符串、布尔值)的响应式数据。也可以用于对象和数组,但访问和修改时需要使用 .value
  • reactive:用于创建对象和数组的响应式数据,访问和修改时不需要使用 .value
import { ref, reactive } from 'vue';

// 使用 ref 创建对象响应式数据
const userRef = ref({ name: 'Alice', age: 25 });
userRef.value.name = 'Bob';

// 使用 reactive 创建对象响应式数据
const userReactive = reactive({ name: 'Alice', age: 25 });
userReactive.name = 'Bob';

5. ref 在组合式函数中的使用

ref 在组合式函数中非常有用,可以将响应式数据封装在函数内部,实现代码的复用。

import { ref } from 'vue';

// 组合式函数
const useCounter = () => {
  const count = ref(0);

  const increment = () => {
    count.value++;
  };

  const decrement = () => {
    count.value--;
  };

  return {
    count,
    increment,
    decrement
  };
};

export default useCounter;

在组件中使用组合式函数:

<template>
  <div>
    <p>{{ counter.count }}</p>
    <button @click="counter.increment">Increment</button>
    <button @click="counter.decrement">Decrement</button>
  </div>
</template>

<script setup>
import useCounter from './useCounter';

const counter = useCounter();
</script>

6. ref 与 DOM 元素的绑定

ref 还可以用于获取 DOM 元素的引用。在模板中使用 ref 指令,然后在 JavaScript 中通过 ref 对象访问 DOM 元素。

<template>
  <div>
    <!-- 使用 ref 指令绑定 DOM 元素 -->
    <input ref="inputRef" type="text" />
    <button @click="focusInput">Focus Input</button>
  </div>
</template>

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

// 创建一个 ref 对象用于引用 DOM 元素
const inputRef = ref(null);

const focusInput = () => {
  if (inputRef.value) {
    inputRef.value.focus();
  }
};
</script>

7. 注意事项

  • 基本数据类型:对于基本数据类型,修改值时必须使用 .value,否则不会触发响应式更新。
  • 对象和数组:虽然 ref 可以用于对象和数组,但在模板中访问嵌套属性时,仍然需要使用 .value,除非使用 toRefstoRef 进行转换。

总之,ref 是 Vue 3 中非常强大和灵活的工具,可用于创建响应式数据、获取 DOM 元素引用等多种场景。

3.单文件组件:SFC (Single File Component) Vue.js

在 Vue.js 中,单文件组件(SFC)是一种将模板、逻辑和样式封装在同一文件内的开发模式。这种结构不仅提高了代码的可维护性和模块化程度,还使得开发者能够更加直观地理解各个部分之间的关系。

单文件组件的基本构成

一个典型的 .vue 文件由三个主要部分组成:

  • : 定义HTML结构。

    <template>
      <div class="example">
        <!-- 组件的内容 -->
      </div>
    </template>
    

这些组成部分共同构成了完整的Vue组件,允许在一个地方完成所有的定义工作,极大提升了开发效率和用户体验。

对于希望进一步优化构建过程的情况,还可以利用 vite 或者 Webpack 等现代打包工具来处理这类文件,确保生产环境下的最佳性能表现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值