Vue开发 常用方法总结

2023-11-16

$nextTick()

this.$nextTick()将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。

使用场景
在一些情况下,变量进行了初始赋值或更新,但是DOM还未更新完成时,使用变量的值是不起作用的。此时就需要通过this.$nextTick()等待DOM更新加载完成后立即进行使用。常用于created钩子函数中以及涉及到DOM更新的情况。
用法

this.$nextTick(() => {
  this.$refs.table.refresh(true)
})

this.$nextTick()在页面交互,尤其是从后台获取数据后重新生成dom对象之后的操作有很大的优势

 
 
 

$forceUpdate()

迫使 Vue 实例重新渲染。注意它仅仅影响实例本身和插入插槽内容的子组件,而不是所有子组件。

使用场景
对于一个复杂的对象,例如一个对象数组,直接去给数组上某一个元素增加属性,或者直接把数组的length变成0,vue无法知道发生了改变时可以使用强制更新

另一方面,表单渲染时,有时进行了选择操作,但是表单内容未更新,可使用强制更新

在这里插入图片描述
用法

// 用法一
<a-select
   placeholder="请选择"
   v-model="infoData.approveBy"
   :options="roleList"
   :disabled="!isEdit"
   @change="$forceUpdate()"
 />
 
//用法二
switchChange (checked) {
   this.isEdit = checked
   this.$forceUpdate()
 }, 

 
 
 

$set()

使用场景
受 ES5 的限制,Vue.js 不能检测到对象属性的添加或删除

向响应式对象中添加一个 property,并确保这个新 property 同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新 property,因为 Vue 无法探测普通的新增 property (比如 this.myObject.newProperty = ‘hi’)

注意对象不能是 Vue 实例,或者 Vue 实例的根数据对象。

用法
this.$set( target, propertyName/index, value )

  • target:要更改的数据源(可以是对象或者数组)
  • propertyName/index:对象新添加的属性名或者数组新添加元素的下标位置
  • value:新添加属性的值
// 对象
this.$set(this.student,"age", 24)

// 数组
this.$set(this.arrayList, 2, { name: "张三" })

 
 
 

.sync——2.3.0+ 新增(Vue 3.x中已被v-model替换,不再支持)

使用场景
在有些情况下,我们可能需要对一个 prop 进行“双向绑定”,在vue 2.3.0之后便可以使用.sync修饰符进行操作。Vue 3.0之后不再支持

用法
父组件

<comp :foo.sync="bar"></comp>

实际会被等价扩展为

<comp :foo="bar" @update:foo="val => bar = val"></comp>

 
子组件

this.$emit('update:foo', newValue)

 
 
 

Vue定义全局函数

方法一
直接在main.js文件中定义

// 全局记录系统出错日志方法
Vue.prototype.writeSysLog = function (params) {
  do something...
}

使用方法(在所有组件中均可使用)

this.writeSysLog (params)

 
方法二
单独创建一个 request.js 文件,用于存放常用全局函数

// 写法一
exports.install = function (Vue, options) {
  Vue.prototype.writeSysLog  = function (params){
    do something...
  };
};

// 写法二(exports.install运行报错可用此方法解决)
const installer = {
    vm: {},
    install(Vue) {
        Vue.prototype.writeSysLog = function (params) {
            do something...
        }
    }
}

export { installer as global }

然后在main.js中引用

// 写法一
import request from '@/utils/request'
Vue.use(request)

// 写法二
import { global } from '@/utils/request'
Vue.use(global)

 
 
 

.native修饰符

官方对.native修饰符的解释为:

有时候,你可能想在某个组件的根元素上监听一个原生事件。可以使用 v-on 的修饰符 .native 。例如:

<my-component v-on:click.native="doTheThing"></my-component>

简单理解为:.native修饰符是告诉编译器,前面的事件为原生的事件,不是自定义的事件,按照原生的方法解析便可。

 
 
 

异步编程

await—— Generator 函数的语法糖

多个异步任务的处理方法——不存在继发关系(互不依赖)
try {
   let [textDatas, mainData] = await Promise.all([ 
     getInfo(param), 
     getData(param)
   ])
   // do something...
   console.log(textDatas,'www',mainData)
 } catch (error) {
   console.log(error)
 }
多个异步任务的处理方法——存在继发关系
let foo = await getFoo(param);
let bar = await getBar(foo);
console.log(bar)

按顺序完成异步操作

使用注意点

  1. await命令后面的Promise对象,运行结果可能是rejected,所以最好把await命令放在try…catch代码块中
  2. 多个await命令后面的异步操作,如果不存在继发关系,最好让它们同时触发,节省时间
  3. await命令只能用在async函数之中,如果用在普通函数,就会报错
  4. async 函数可以保留运行堆栈

 
 
 

query和params传参的区别

首先,两种传参在url中的展现形式如下

  1. query:(/Info?id=123456789; /Info?uid=666;等)url地址栏中是这样的形式则是query传参
  2. params:(/Info/:id;/Info/123456789;/Info/666)url地址栏中是这样的形式则是params传参
    ps:一般情况下,如果参数不多,采用params传参。当然如果不想将参数值显示在url地址栏中,则采用post方法传参

两种传参的获取方式
query: this. r o u t e . q u e r y . i d p a r a m s : t h i s . route.query.id params: this. route.query.idparamsthis.route.params.id

 
 
 
 
 
 
持续更新…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue开发 常用方法总结 的相关文章

  • ReferenceError:找不到变量:需要

    我在加载时遇到问题node modules到我的网页之一 我已经安装了 npm node js 并且我想使用require 函数在我的网站上初始化 Firebase 我不知道为什么 但它抛出引用错误 ReferenceError 找不到变量
  • 无法显示由 Fine-uploader 上传到 Amazon s3 的图像

    我现在尝试设置fineuploader s3以显示在aws服务器上成功上传的文件的图像 如示例页面上所做的那样 http fineuploader com s3 demo http fineuploader com s3 demo 我 仍然
  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • 在 MongoDB 中查找具有字符串 ID 数组的文档

    我有一个 id 字符串数组 我想将其与 find 函数一起使用 db companies find id in arr arr看起来像这样 563a2c60b511b7ff2c61e938 563a2c60b511b7ff2c61e8b7
  • 计算Javascript中两次点击之间的时间

    我想用 javascript 计算属性的两次点击之间的时间 但我不知道如何 例如 a href click here a 如果用户单击多次 假设 5 秒内 我想显示警报 如果有帮助的话我正在使用 jQuery 我对 javascript 不
  • 将一个文本框的内容复制到另一个文本框

    假设在文本框中输入了一个条目 是否可以在第二个文本框中保留相同的输入文本 如果是这样 这是如何完成的
  • Flask wtf.quick_form 运行一些 javascript 并设置表单变量

    我正在创建博客文章 到目前为止已经使用普通的 html 表单完成了 我所做的一个有趣的想法是运行 javascript onclick 并使用页面中的额外数据在表单中设置一个隐藏变量 这很好地传递到服务器并通过 request form 获
  • 创建 Cookie 时需要帮助

    我有一个名为yes和另一个名叫no
  • 使用模态表单 ajax 超出 HTMLFormElement.toString 的最大调用堆栈大小

    我想使用模态窗口中的 ajax 请求提交表单 单击此链接可打开该模式 a class btn btn primary i class fa fa edit i Write a review a 模态窗口 div class modal fa
  • 在 MVC Razor 中的 C# 和 Javascript 之间共享常量

    我想在服务器上的 C 和客户端上的 Javascript 中都使用字符串常量 我将常量封装在 C 类中 namespace MyModel public static class Constants public const string
  • 使react-leaflet能够离线使用

    我一直在使用反应传单 https github com PaulLeCam react leaflet图书馆 到目前为止运作良好 现在我希望网站预加载尽可能多的图块 以便网络应用程序 也是 PWA 可以在没有互联网的情况下使用 我找到了一些
  • iframe 重新加载按钮

    我浏览了很多网站 但似乎没有一个能正常工作 或者我不明白它们 我想要一个刷新某个 iframe 的简单按钮 该按钮将位于父页面上 并且 iframe 名称为 Right 有很多方法可以做到这一点 假设这个iframe markup 我们可以
  • v-file-input .click() 不是函数

    我试图以编程方式触发 v file input 的 click 事件 因为它在 Vuetify 的文档中 但它显示一个错误this refs imagePicker click is not a function我在这里错过了什么吗 代码重
  • 用数组反向查找对象

    假设我有一个这样的对象 resourceMap a 0 1 2 3 4 5 6 7 8 9 10 b 11 12 c 21 23 d 54 55 56 57 510 确定是否的最佳方法是什么resourceId 21将会 c 我们不知道钥匙
  • Flux + React.js - 操作中的回调是好还是坏?

    让我解释一下我最近遇到的问题 我有 React js Flux 驱动的应用程序 有一个列表显示文章数量 注意 应用程序中有多个不同的列表 和文章详情查看在里面 但每个列表只有一个 API 端点 它返回文章数组 为了显示我需要的详细信息fin
  • ES6 模板文字的延迟执行

    我正在玩新的ES6 模板文字 http tc39wiki calculist org es6 template strings 我首先想到的是String format对于 JavaScript 所以我开始实现一个原型 String pro
  • Django 与谷歌图表

    我试图让谷歌图表显示在我的页面上 但我不知道如何将值从 django 视图传递到 javascript 以便我可以绘制图表 姜戈代码 array Year Sales Expenses 2004 1000 400 2005 1170 460
  • Bootstrap 3 / 显示模式不适用于 javascript 方式

    我用Modal http getbootstrap com javascript modalsBootstrap 3 0 的功能 我有这个代码 a href myNestedContent Open the modal containing
  • 如何调试 Gulp 任务?

    如何调试我的中定义的 gulp 任务gulpfile js使用诸如 Google Chrome 调试器之类的调试器逐行单步执行任务的代码 对于 Node js 6 3 版本 您可以使用 inspect flag https nodejs o
  • 在 javascript 中使用 xPath 解析具有默认命名空间的 XML

    我需要创建一个 XML xPath 解析器 所有解析都必须在客户端进行 使用 JavaScript 我创建了一个 javascript 来执行此操作 在默认名称空间发挥作用之前 一切看起来都正常 我根本无法查询具有默认命名空间的 XML 我

随机推荐

  • OpenCV Android以及扩展模块opencv_contrib的编译

    OpenCV和OpenCV contrib模块4 5 x版本的编译 环境准备 Ubuntu 16 04 1 环境变量 export ANDROID HOME work android sdk export ANDROID NDK HOME
  • 【allegro 17.4软件操作保姆级教程一】软件操作环境设置

    个人主页 highman110 作者简介 一名硬件工程师 持续学习 不断记录 保持思考 输出干货内容 目录 1操作环境准备 1 1单位设置 1 2画布面积设置 1 3软件显示设置 1 4布局显示设置 1 5格点设置 1 6大十字光标设置 1
  • 什么场景应该用 MongoDB ?

    月初在云栖社区上发起了一个 MongoDB 使用场景及运维管理问题交流探讨 的技术话题 有近5000人关注了该话题讨论 这里就 MongoDB 的使用场景做个简单的总结 谈谈什么场景该用 MongoDB 很多人比较关心 MongoDB 的适
  • 华为OD机试(JAVA)真题 2023(汽水瓶\随机数\进制转换)

    系列文章目录 文章目录 系列文章目录 前言 一 1 汽水瓶 二 明明的随机数 前言 一 1 汽水瓶 某商店规定 三个空汽水瓶可以换一瓶汽水 允许向老板借空汽水瓶 但是必须要归还 小张手上有n个空汽水瓶 她想知道自己最多可以喝到多少瓶汽水 数
  • 运维岗位面试被问到的问题

    一 tcp ip 三次握手具体过程 二 静态路由动态路由里面有哪些协议 三 ip地址分类 四 iptabled 五 linu系统和windows系统的区别 六 linux软连接与硬链接的区别 七 Linux命令 八 如何将一个用户添加到某一
  • cocosCreator 之 ScrollView

    版本 3 4 0 参考 ScrollView组件 简介 ScrollView组件作为滚动容器来使用 它的实现通过ScrollBar组件来展示内容的位置和Mask组件显示指定区域 来保证有限的区域内显示更多的内容 它的构成部分 ScrollB
  • 史上功能最全的Java权限认证框架

    文章目录 Sa Token是什么 Sa Token 能做什么 代码示例 官网地址 sa token 使用示例 SpringBoot 环境 1 创建项目 2 设置jar包依赖 3 配置文件 4 启动类 5 运行 Sa Token是什么 sa
  • LeetCode 101:和你一起你轻松刷题(python版) 第 1 章 题目分类

    LeetCode 101 和你一起你轻松刷题 python版 注 作者 高畅 Chang Gao 原书为c 版本 解题思路清晰 知识点全面 是一本好书 翻译成python版本的解法可能未必是最优解法 由于本人是新手小白 算法实现是第一步 优
  • stm32+lwip(四):网页服务器测试

    ST官方有lwip的例程 下载地址如下 https www st com content st com en products embedded software mcus embedded software stm32 embedded
  • ubuntu 22.04 升级openssh9.4p1 ,openssl3.1.2,zlib1.2.13

    参考 https blog csdn net weixin 37534043 article details 120822689 https blog csdn net xujiamin0022016 article details 878
  • C++设计模式---组合模式

    文章目录 使用场景 组合模式的定义 安全组合模式 使用场景 组合模式和类与类之间的组合是不同的概念 组合模式主要用来处理树形结构的数据 如果要表达的数据不是树形结构 就不太适合组合模式 比如我们有一个目录结构 这个目录我们把它绘制成树形结构
  • python中sha1 md5等用法

    import hashlib sha1 hashlib sha1 sha1 update a encode utf 8 sha1 update b encode utf 8 sha1 update c encode utf 8 等同于 sh
  • Linux下more命令高级用法

    我们在 Linux 环境下工作时 每天肯定会跟各种各样的文本文件打交道 这些文件 有时候会非常长 无法在一屏的空间内显示完全 所以 在查看这种文件时 我们需要分页显示 这时 我们就可以使用 more 命令 more 命令基本用法 more
  • 上传文件至svn

    1 软件管理搜索下载tortoiseSVN 2 在D盘新建一个文件夹 重命名 最好与SVN上要上传的目录名字保持一致 自己取也可以 3 选中文件夹右键点击SVN checkout 弹出框标红的填写XXSVN上的地址 拉取远程仓库的文件 完成
  • 游戏贪吃蛇计分c语言,C语言实现贪吃蛇游戏(命令行)

    这是一个纯C语言写的贪吃蛇游戏 供大家参考 具体内容如下 include include include include include define SNAKE LENGTH 100 定义蛇的最大长度 define SCREEN WIDE
  • C++中的STL中map用法详解

    C 中的STL中map用法详解 Map是STL的一个关联容器 它提供一对一 其中第一个可以称为关键字 每个关键字只能在map中出现一次 第二个可能称为该关键字的值 的数据 处理能力 由于这个特性 它完成有可能在我们处理一对一数据的时候 在编
  • 我们规定对一个字符串的shift操作如下:

    shift ABCD 0 ABCD shift ABCD 1 DABC shift ABCD 2 CDAB 换言之 我们把最左侧的N个字符剪切下来 按序附加到了右侧 给定一个长为n的字符串 我们规定最多可以进行n次向左的循环shift操作
  • itextpdf、freemarker和flying-saucer-pdf实现PDF导出功能

    目录 目录 1 导入maven 2 代码结构 编辑 3 纯文本生成方式 JavaToPdfHtml template html simhei ttf 字体文件自行百度下载 4 基础上加了freemarker模板引擎 JavaToPdfHtm
  • k8s英伟达GPU插件(nvidia-device-plugin)

    安装方法 Installation Guide NVIDIA Cloud Native Technologies documentation 1 本地节点添加 NVIDIA 驱动程序 要求 NVIDIA drivers 384 81 先确保
  • Vue开发 常用方法总结

    nextTick this nextTick 将回调延迟到下次 DOM 更新循环之后执行 在修改数据之后立即使用它 然后等待 DOM 更新 使用场景 在一些情况下 变量进行了初始赋值或更新 但是DOM还未更新完成时 使用变量的值是不起作用的