vue中let _this=this作用

本文介绍了在Vue中使用定时器时,this关键字指向改变的问题,导致无法正确修改vue实例的变量。通过保存初始的this为`_this`,可以确保在回调函数中仍能访问到vue实例的属性和方法。这个技巧对于理解和避免在前端开发中常见的Vue绑定错误至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//vue 变量 
isclick: true,
//定时器3秒后将isclick改为false
setTimeout(function(){
	this.isclick = false; 
},3000);
//打印this.isclick依然是true;

let _this=this作用:正常我们要获取vue变量或方法的时候,就使用this,但是在一些用到回调函数的时候,this指的就不是vue变量,而是回调函数本身,普通函数的this指向调用它的那个对象,所以在一开始的时候,先定义_this=this,这样在任何位置都可以用_this来获取vue变量或方法。

这段 Vue.js 的代码实现了对 `site_list` 数据的处理,并将结果存储到多个变量以及数组中。虽然功能可以实现,但存在一些冗余操作和不够优雅的地方。以下是优化建议: --- ### **代码优化思路** 1. **减少重复计算** 目前代码中多次调用了 `.map()` 来提取数据字段 (`this.site_list.map(...)`),这导致了不必要的性能开销。可以通过一次遍历完成所有需要的数据提取。 2. **合并逻辑** 将部分逻辑整合在一起,避免过多嵌套循环或独立的操作步骤。 3. **提升可读性** 使用更具语义化的变量名、函数封装等手段提高代码的可维护性和易理解度。 4. **利用工具库(如果必要)** 如果项目允许,可以引入像 Lodash 这样的工具库简化常见的集合操作。 5. **解构赋值** 利用 JavaScript 的解构语法可以直接获取对象属性,减少繁琐的点式访问。 6. **初始化状态管理** 确保初始状态下相关的数据结构已经准备好,避免频繁地手动清空旧数据。 --- ### **优化后的代码** ```javascript .then(res => { // 解析返回的结果并直接映射生成目标数据 const { Items } = res.ResData || {}; if (!Items || !Array.isArray(Items)) return; this.site_list = Items; this.ZZJRLShuzi = 0; // 初始化累积值 // 清空 reportMonData 避免历史残留 this.reportMonData = []; for (const site of this.site_list) { // 提取关键字段 const { PhotovoltaicInstalledCapacity: rl, PhotovoltaicPowerGeneration: gl, PhotovoltaicTotalPowerGeneration: zfdl, SiteName: dy } = site; // 更新累计值 this.ZZJRLShuzi += Number(rl); // 构造报告项 const item = { ZDMV: dy, // 站点名称 FZ: "/", // 固定分隔符 ZT: "正常", // 默认状态 RL: rl, // 容量 SSGL: gl, // 发电功率 BRFDL: "0", // 前一天发电量 BYFDL: "0", // 昨天发电量 ZFDL: zfdl // 总发电量 }; this.reportMonData.push(item); } // 调整日期类型 this.GetCurType_1("日"); }); ``` --- ### **优化细节说明** 1. **提前解析 `res.ResData.Items` 并校验是否存在** - 如果请求未成功或缺少预期数据,则直接终止后续流程,防止潜在错误。 2. **使用 ES6 解构语法** - 对象解构减少了反复通过 `site.xxx` 访问字段的需求,让代码更简洁清晰。 3. **单次遍历完成多重任务** - 同时提取所需字段、更新累加器、构造最终报表数据。 4. **清理多余内容** - 移除了注释掉的内容(如 `// const days = ...`),只保留核心逻辑。 5. **确保数值运算安全** - 在累积 `PhotovoltaicInstalledCapacity` 时显式转换为数字类型以防字符串拼接问题。 --- ### **进一步改进方向** 如果你希望支持动态化需求或其他复杂场景,还可以考虑以下做法: - 把固定格式的部分抽离成模板配置; - 引入 Redux 或 Vuex 实现集中式的全局状态管理; - 结合 TypeScript 类型检查增强代码健壮性; --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值