IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> VUE3-工作笔记03 -> 正文阅读

[JavaScript知识库]VUE3-工作笔记03

本节:记录自己工作中遇到的语法,有时候虽然会复制粘贴解决问题,但是对很多内容的原理都不清楚,所以解决完问题,还得再理解一下原理,日积月累才会越来越深。

一、declare module 是ts的声明文件,比如ts里面没有this这种属性或者方法,你就可以使用declare?来进行一个声明和解释,告诉ts这个是一个什么类型,它需要怎么判断。用在框架自带的一些属性,你要进行扩展的时候使用的。

TypeScript 作为 JavaScript 的超集,在开发过程中不可避免要引用其他第三方的 JavaScript 的库。虽然通过直接引用可以调用库的类和方法,但是却无法使用TypeScript 诸如类型检查等特性功能。为了解决这个问题,需要将这些库里的函数和方法体去掉后只保留导出类型声明,而产生了一个描述 JavaScript 库和模块信息的声明文件。通过引用这个声明文件,就可以借用 TypeScript 的各种特性来使用库文件了。TypeScript 声明文件 | 菜鸟教程

二、enum枚举可以进行字符串和数字的对应,可以用于取值被限定在一定范围内的场景,比如一周只能有七天,颜色限定为红绿蓝等。
数字枚举有自增长的行为,可以使用初始器指定从几开始自增。默认属性对应的是0,但是也可以设置从1开始

// 使用初始器,Up使用初始化为 1。 其余的成员会从 1 开始自动增长
enum Direction1 {
    Up = 1,	// 此时 Up = 1
    Down,	// 此时 Down= 2
    Left,	// 此时 Left= 3
    Right	// 此时 Right= 4
}
const arrayValues1 = Object.values(Direction1)
console.log(arrayValues1)	// ['Up','Down','Left','Right', 1, 2, 3, 4]


// 不用初始器,Up使用默认值为 0。 其余的成员会从 0 开始自动增长
enum Direction2 {
    Up,		// 此时 Direction.Up = 0
    Down,	// 此时 Direction.Down= 1
    Left,	// 此时 Direction.Left= 2
    Right,	// 此时 Direction.Right= 3
}
const arrayValues2 = Object.values(Direction2)
console.log(arrayValues2)	// ['Up','Down','Left','Right', 0, 1, 2, 3]

// 我们可以通过枚举的属性来访问枚举成员,和枚举的名字来访问枚举类型
enum Response {
    No = 0,
    Yes = 1,
}
console.log(Response.No)	// 0
console.log(Response.Yes)	// 1

字符串枚举
在一个字符串枚举里,字符串枚举没有自增长的行为,每个成员必须进行初始化
可以用字符串字面量,或另外一个字符串枚举成员进行初始化

enum Direction {
    Up = "up",			// 此时 Direction.Up = "up"
    Down = "down",		// 此时 Direction.Down = "down"
    Left = "left",		// 此时 Direction.Left = "left"
    Right = "right",	// 此时 Direction.Right = "right"
}
const arrayValues = Object.values(Direction)
console.log(arrayValues)	// ['up','down','left','right']


【TS】enum 枚举(含数字枚举转数组方法)_一颗不甘坠落的流星的博客-CSDN博客_ts 枚举转数组???????

这是我工作中用到的地方:?在表格里面显示徽标和文字的自定义方法

declare?声明文件

?用在这里就是一个枚举数组,字符串和数字对应,而且是不同类型的变量

?三、test()方法

test() 方法用于检测一个字符串是否匹配内容,如果字符串中有匹配的值返回 true ,否则返回 false。JavaScript test() 方法 | 菜鸟教程

?工作中用到的地方:检查上传内容的格式。正则表达式都是? /开头,$/结束。

?/\.tar\.gz$/? 这是判断上传的文件是不是.tar.gz格式的。

?四、FormData创建一个表单的对象,主要是可以append添加上传的内容

?其主要用于发送表单数据,但亦可用于发送带键数据 (keyed data),而独立于表单使用。

工作中用到的地方:使用 FormData 对象上传文件,导入文件

let formData = new FormData();

formData.append("version", file.file);

?

?

?五、watch 和 watchEffect 的区别_面条请不要欺负汉堡的博客-CSDN博客

watch 和 watchEffect 的区别
watch 特点
watch 监听函数可以添加配置项,也可以配置为空,配置项为空的情况下,watch的特点为:

有惰性:运行的时候,不会立即执行;
更加具体:需要添加监听的属性;
可访问属性之前的值:回调函数内会返回最新值和修改之前的值;
可配置:配置项可补充 watch 特点上的不足:
immediate:配置 watch 属性是否立即执行,值为 true 时,一旦运行就会立即执行,值为 false 时,保持惰性。
deep:配置 watch 是否深度监听,值为 true 时,可以监听对象所有属性,值为 false 时保持更加具体特性,必须指定到具体的属性上。
watchEffect 特点

非惰性:一旦运行就会立即执行;
更加抽象:使用时不需要具体指定监听的谁,回调函数内直接使用就可以;
不可访问之前的值:只能访问当前最新的值,访问不到修改之前的值;

watchEffect(() => {
? // console.log(el, "valuevaluevaluevaluevaluevaluevaluevaluevalue");
? columns.value = columnSource.filter((el) =>
? ? value.value.includes(el.dataIndex)
? );

工作中用到的地方:监听当前有多少栏目,可以监听栏目的显示和隐藏

const columns = ref<tableColumType[]>([]);
const value = ref(columnSource.map((el) => el.dataIndex));

// 监听器
watchEffect(() => {
  // console.log(el, "valuevaluevaluevaluevaluevaluevaluevaluevalue");
  columns.value = columnSource.filter((el) =>
    value.value.includes(el.dataIndex)
  );
});

六、方法的.catch可以抛出错误情况下的内容。

工作中使用的:

七、?Blob(Binary Large Object)术语最初来自数据库(oracle 中也有类似的栏位类型。),早期数据库因为要存储声音、图片、以及可执行程序等二进制数据对象所以给该类对象取名为Blob。?
? ? ? ?在Web领域,Blob被定义为包含只读数据的类文件对象。Blob中的数据不一定是js原生数据形式。常见的File接口就继承自Blob,并扩展它用于支持用户系统的本地文件。

构建一个Blob对象通常有三种方式:

通过Blob对象的构造函数来构建。
从已有的Blob对象调用slice接口切出一个新的Blob对象。
canvas API toBlob方法,把当前绘制信息转为一个Blob对象。
JavaScript 之 Blob 对象类型__夜渐凉的博客-CSDN博客_blob类型

Blob对象的基本属性:

  • size :Blob对象包含的字节数。(只读)
  • type :?Blob对象包含的数据类型MIME,如果类型未知则返回空字符串。

工作中用到的,导出文件:

?八、一些功能的实现。

表格:

   <a-table
            :columns="columns"
            size="middle"
            :data-source="journalList"
            :row-selection="rowSelection"
            rowKey="id"
            @change="handleTableChange"
            :pagination="pagination"
            :scroll="{ x: 600, y: 'calc(100vh - 400px)' }"
          >
          </a-table>

删除按钮:

// 选择当前行
const rowSelection = computed(() => {
  return {
    selectedRowKeys: state.selectedRowKeys,
    onChange: (selectedRowKeys: never[]) => {
      state.selectedRowKeys = selectedRowKeys;
    },
  };
});


// 删除按钮
const rmBtn = () => {
  rmJournal().then((res) => {
    console.log(res);
    if (!state.selectedRowKeys.length)
      return message.info(t("journal.journalList.pleaseSelectLog"));
    Modal.confirm({
      title: t("journal.journalList.deleteLog"),
      content: t("journal.journalList.deleteLogContent"),
      onOk: () => {
        let list = state.selectedRowKeys || [];
        rmJournal({ list: list }).then((res) => {
          let result = res.data;
          if (result && result.code === 0) {
            message.success(t("journal.journalList.logDeleted"));
            state.selectedRowKeys = [];
            //重新调用列表接口
            refresh();
            return;
          }
        });
      },
      onCancel: () => {
        message.info(t("journal.journalList.cancelOperation"));
      },
    });
  });
};

刷新:清空列表再直接赋值原始初始化的内容。调用 debounce()防止用户多次点击

// 刷新,清空列表再调用 debounce()防止用户多次点击
const refresh = debounce(() => {
  current.value = 1;
  Object.assign(searchList, new journalSearchClass().searchList);
  getJournal(searchList); //搜索
}, 500);

?搜索:

import dayjs, { Dayjs } from "dayjs"; //日期选择器的格式用dayjs来转换

// 转换日期格式
const formatTime = (time: Dayjs) => {
  if (!time) return "";
  return dayjs(time).format("YYYY-MM-DD HH:ss:mm");
};

// 搜索按钮 debounce()防止用户多次点击
const handleSearch = debounce((searchList: any) => {
  let { startTime, endTime } = searchList;
  searchValue = Object.assign({}, searchList);
  state.selectedRowKeys = [];
  //重新调用列表接口
  current.value = 1;
  let obj = Object.assign({}, searchValue, {
    startTime: formatTime(startTime),
    endTime: formatTime(endTime),
  });
  getJournal(obj);
}, 500);

九、设置ant design时间选择器的限制时间,开始时间之后,才可以选择结束时间

?

// 开始时间
const disabledStartDate = (startTime: string) => {
  const endTime = searchList.endTime;
  if (!startTime || !endTime) {
    return false;
  }
  return startTime.valueOf() > endTime.valueOf();
};

// 结束时间
const disabledEndDate = (endTime: string) => {
  const startTime = searchList.startTime;
  if (!endTime || !startTime) {
    return false;
  }
  return startTime.valueOf() >= endTime.valueOf();
};

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:32:10  更:2022-10-08 20:35:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 17:15:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码