watch用错性能掉一半

下面提出的方案,主要用于解决 Vue3 开发中的问题。

深度监听造成的性能浪费

使用深度监听(deep: true)时,它会遍历对象的所有属性。只要其中任一属性发生变化,就会触发监听,可能导致性能浪费。

对此我提供了三种解决方案

精确监听

js 复制代码
watch(
    () => bigObject.user.profile.name,
    (newVal) => {
        // 做对应业务处理
    }
)

使用 computed 做中间件

js 复制代码
const userData = computed (()=>({
    name: bigObject.user.name,
    age: bigObject.user.age
}))

watch(
    () => userData,
    (newVal) => {
        // 做对应业务处理
    }
)

使用多源监听

js 复制代码
cosnt form = relative({
    password: '',
    confirmPassword: ''
})

watch(
    [()=>bigObject.user.name, ()=>bigObject.user.age],
    ([newName, newAge])=>{
        // 处理对应业务
    }
)

结尾

我会每天更新一个知识点。如果你在开发中遇到难题,可以留言到评论区,我会选取部分问题作为选题进行解答。欢迎各位同学提问和交流!

相关推荐
天蓝色的鱼鱼2 分钟前
Node.js 现在能直接跑 TypeScript 了,tsx 和 ts-node 还需要吗?
前端·typescript·node.js
阿猫的故乡5 分钟前
Vue动态组件+异步组件实战:Tab切换、按需加载、KeepAlive缓存,一次搞定
前端·vue.js·缓存
风骏时光牛马7 分钟前
Stylus预处理器完整语法与项目实战详细代码案例
前端
tangdou3690986557 分钟前
DevOps Skill工具链:CI/CD流水线搭建全攻略
前端
tangdou36909865513 分钟前
前端Skill全家桶:React+Vue+TypeScript开发实战
前端
大大杰哥21 分钟前
Vue2学习(3)--组件中的通信方式/组件之间的交互
java·前端·javascript
糖醋丸子22 分钟前
D3生成topo 结点连线 webpack 配置兼容ie 11
前端
阿猫的故乡22 分钟前
Vue3自定义插件:封装一个全局消息提示插件,所有组件都能直接用
前端·javascript·vue.js
用户831348593069825 分钟前
Cesium实现实时联动鹰眼缩略图
vue.js·cesium
橘子星27 分钟前
树与二叉树:从概念到 JavaScript 实现
前端·javascript·面试