VUE那些坑

WATCH

  1. watch变量变化太快,只能监听到最后一次,可以sleep实现快速监听;
  2. watch默认第一次不监听,需要加参数,immediate:true

Components

  1. 重复嵌套子组件:子组件1-》子组件2-》子组件1,每次导入需要import 不同的名称

STYLES

  1. 不加require动态绑定会解析不到(vue_admin_template框架里)
// An highlighted block
:src="require(`@/icons/monitor/${list.stat_type}.png`)"

ElementUI

  1. element ui 自定义上传,解决进度条问题
let form = new FormData(); //uploader为之前提到的实例 
form.append("file", uploader.file); 
axios .post(url,form, { 
   headers: { "Content-Type": "multipart/form-data" }, 
   onUploadProgress: progressEvent => { 
   let percent=(progressEvent.loaded / progressEvent.total * 100) | 0 
   //调用onProgress方法来显示进度条,需要传递个对象 percent为进度值 
   uploader.onProgress({percent:percent}) 
   } 
}).then((res)=>{ 
     //上传成功 调用onSuccess方法,否则没有完成图标 
     //处理自己的逻辑
     uploader.onSuccess() 
})
.catch((err)=>{ 
       //上传失败 调用onError方法 
          //处理自己的逻辑
        uploader.onError()
 })

### Vue.js 中 `watch` 选项的常见问题及解决方法 #### 1. 数据更新未触发侦听器 当期望的数据发生变化时,如果发现 `watch` 并没有按照预期工作,则可能是由于监听的目标不是响应式的对象或属性。确保被监控的对象是通过 Vue 实例化后的 `data` 或者使用了 `ref`/`reactive` 创建出来的响应式变量[^2]。 对于深层次嵌套结构内的改变未能捕捉的情况,需设置 `{ deep: true }` 参数来开启深度监测模式: ```javascript const app = Vue.createApp({ data() { return { user: { name: 'John' } }; }, watch: { // 开启深观察能力 user: { handler(newValue, oldValue) { console.log('User changed:', newValue); }, deep: true, } } }); ``` #### 2. 初次加载时不执行回调函数 有时可能希望在初始化阶段也调用一次观察者的处理逻辑。此时可以在定义 watcher 时加入 immediate 属性: ```javascript app.watch(() => state.count, (newVal) => { console.log(`count is now ${newVal}`); }, { immediate: true }); ``` 这使得即使是在第一次赋值的时候也会触发展开的操作[^3]。 #### 3. 清除不再需要的侦听器 为了避免内存泄漏,在组件销毁前应当移除不必要的 watchers。特别是在组合式 API 下,可以通过返回一个 stop 函数来进行手动清除;而对于选项式 API 来说,通常不需要显式地做这件事,因为 Vue 会自动管理生命周期挂钩中的 cleanup 工作。 ```javascript // 组合式API下 import { onMounted, onUnmounted, watchEffect } from 'vue'; export default { setup() { let stopWatch; onMounted(() => { stopWatch = watch(source, () => {/* ... */}); }); onUnmounted(() => { if(stopWatch){ stopWatch(); } }) } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值