当前位置: 首页 > news >正文

关于 API

关于 API

$set

问法:有没有遇到过数据更新了但视图没有更新的情况?

<template><div>{{arr}}<button @click="btn"></button></div>
</template><script>
export default {name:"Home"data(){return{arr:[0,1,2]}},methods: {btn(){// this.arr[1]="xxx"; // 这种改法,log 出来的数据改变了,但是视图上的数据没有改变this.$set(this.arr,1,'xxx') // 这种改法在 log 和试图上数据都改变了  三个参数分别是:操作对象、下标或者属性名、更改的值console.log(this.arr);}},
}
</script>

this.$set(target,key, 修改后的值)

$nextTick

this.$nextTick 返回的参数(函数)是一个异步的。
功能:获取更新后的 dom 。
源码:

$nextTick(callback){return Promise.resolve().then(()=>{callback();})
}

获取更新后的 dom 的两种方法:

  • 异步获取
  • (比如在 created 周期中)使用 Vue 中自带的 API ,this.$nextTick,其原理是返回一个 Promise.then() 的内容,让 callback 中的内容异步执行。

$refs

用来获取 dom 。

$el

获取当前组件的根节点。

$data

获取其当前组件的 data 数据。

$children

获取当前组件的全部子组件(以数组的形式返回)。

$parent

获取当前组件的父组件,如果找不到则返回自身。

$root

获取根组件。

data 定义数据

问法:Vue2 中数据是定义在 data 中的 return 里的,如果定义在 return 外有什么区别?

定义在 return 外的数据不能被修改,不会实现双向绑定,没有 gettersetter,而 return 内的数据会被 gettersetter 劫持,所以可以实现双向绑定。

但是如果同一个事件同时修改了 return 内和 return 外的两种数据,那么都将被修改。
这是因为双向绑定的数据被 gettersetter 劫持,通知 Vue 对象进行数据更新,所以 return 外的数据也得到了更新。

computed 计算属性

问法:通过 computed 计算属性获得的值可以修改吗?

可以,需要在计算属性中使用 gettersetter 的写法。
getter 中包含的是一般写法中的 return 语句。
setter 中传入一个要修改的值作为参数,包含的是将变量赋值给数据的操作。

export default {name: 'HomeView',data () {return {str: 'abc'}},computed: {// 这是一般的写法// changeStr (){//     return this.str.slice(-1)// }// 这是 getter 和 setter 的写法changeStr: {get(){return this.str.slice(-1)},set( val ){this.str = val,}}},methods: {btn() {this.str = 'xxxx';console.log( this.changeStr )}}
}

问法:当前 v-model 绑定的值是 computed 来的,那么可以修改吗?

可以,使用 gettersetter 写法就可以。

watch

    watch:{obj:{handler(oldVal, newVal) {console.log(oldVal, newVal)},immediate: true,deep: true},obj2 (oldVal, newVal) {console.log(oldVal, newVal)}}

methods 和 computed 的区别

computed 是有缓存机制的,而 methods 是没有缓存机制的(调用几次就执行几次)。

http://www.lryc.cn/news/470697.html

相关文章:

  • 第15次CCF CSP真题解
  • STM32硬件平台
  • 一文讲明白大模型分布式逻辑(从GPU通信原语到Megatron、Deepspeed)
  • 【人工智能-初级】第6章 决策树和随机森林:浅显易懂的介绍及Python实践
  • 时间序列预测(九)——门控循环单元网络(GRU)
  • 李东生牵手通力股份IPO注册卡关,三年近10亿“清仓式分红”引关注
  • Android13、14特殊权限-应用安装权限适配
  • DMVPN协议
  • leetcode动态规划(十八)-零钱兑换II
  • 2024 CSP-J 题解
  • GPU 服务器厂家:中国加速计算服务器市场的前瞻洞察
  • Hadoop集群修改yarn队列
  • 【GPIO】2.ADC配置错误,还是能得到电压数据
  • css-元素居中方式
  • redis内存打满了怎么办?
  • 决策算法的技术分析
  • 【Python爬虫】获取汽车之家车型配置附代码(2024.10)
  • JVM 加载 class 文件的原理机制
  • NumPy学习第九课:字符串相关函数
  • 卷积神经网络(CNNs)在处理光谱特征的序列属性时表现不佳
  • 【IC】MCU的Tick和晶振频率
  • 从0到1学习node.js(npm)
  • 【STM32 Blue Pill编程实例】-OLED显示DS18B20传感器数据
  • STM32 从0开始系统学习3 启动流程
  • 交换机:端口安全与访问控制指南
  • 【C++ | 数据结构】八大常用排序算法详解
  • Oracle 第7章:数据完整性约束
  • 【核心】静态/动态全覆盖路径规划相关技术研究
  • Java 实现集成 Google 邮箱第三方登录实践
  • 人人都在学的智能体(AI Agent),带你轻松入门!