浅谈JS监听非自定义属性

简介: 浅谈JS监听非自定义属性

如何监听

在我们开发项目中,如果有遇到需要监听某一个值变化后,做出一些特殊操作,正常的双向绑定数据都可以直接有API能够监听到变化,像Vue的watch , Angular的ngDoCheck 、ngOnChanges 、React的useEffect 等,但是如果我们项目中需要监听某个框架内部的值变化后,调用一些方法,如果上面方法都无法满足该怎么处理?

使用Vue2原理监听

 //记得在监听的时候,在上面再赋值一遍,防止set的时候为null
Object.defineProperty(dataParent, key, {
      get() {
        return value;
      },
      set(newVal) {
        const oldVal = value;
        value = newVal;
  //当监听值改变后执行操作
        watcher$.next({ newVal, oldVal });
      }
    });
//分割线
//下面使用了rxjs来通知值变化后执行操作,并停止监听后进行销毁
this.setOptions(this.props.options)
this.watchData(this.props, 'options', this.destroy$).subscribe(x => {
      this.setOptions(x.newVal);
});
watchData(dataParent: any, key: string, destroy$: Subject<void>) {
    const watcher$ = new Subject<{ newVal: any; oldVal: any }>();
    let value = dataParent[key];
    Object.defineProperty(dataParent, key, {
      get() {
        return value;
      },
      set(newVal) {
        const oldVal = value;
        value = newVal;
  //当监听值改变后执行操作
        watcher$.next({ newVal, oldVal });
      }
    });
    return watcher$.pipe(takeUntil(destroy$));
  }
相关文章
|
2月前
|
开发框架 前端开发 JavaScript
在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
|
19天前
|
存储 JavaScript 前端开发
js中map属性
js中map属性
31 1
|
16天前
|
存储 前端开发 JavaScript
javascript 异常问题之为自定义异常提供丰富的上下文信息如何实现
javascript 异常问题之为自定义异常提供丰富的上下文信息如何实现
|
10天前
|
前端开发 程序员
HTML+CSS+JavaScript制作动态七夕表白网页(含音乐+自定义文字)
一年一度的520情人节/七夕情人节/女朋友生日/程序员表白,是不是要给女朋友或者正在追求的妹子一点小惊喜呢,今天这篇博客就分享下前端代码如何实现HTML+CSS+JavaScript制作七夕表白网页(含音乐+自定义文字)。赶紧学会了,来制作属于我们程序员的浪漫吧!
21 0
HTML+CSS+JavaScript制作动态七夕表白网页(含音乐+自定义文字)
|
16天前
|
JavaScript 前端开发 API
js全屏,监听页面是否全屏
js全屏,监听页面是否全屏
32 4
|
16天前
|
JavaScript 前端开发
JS - 正则替换富文本内容的所有图片地址,并提取src、alt、style等属性
这篇文章提供了使用JavaScript正则表达式来替换富文本中所有图片地址,并提取`src`、`alt`、`style`等属性的示例代码和方法。
56 1
|
4天前
|
JavaScript PHP 开发者
PHP中的异常处理与自定义错误处理器构建高效Web应用:Node.js与Express框架实战指南
【8月更文挑战第27天】在PHP编程世界中,异常处理和错误管理是代码健壮性的关键。本文将深入探讨PHP的异常处理机制,并指导你如何创建自定义错误处理器,以便优雅地管理运行时错误。我们将一起学习如何使用try-catch块捕获异常,以及如何通过set_error_handler函数定制错误响应。准备好让你的代码变得更加可靠,同时提供更友好的错误信息给最终用户。
|
2月前
|
JavaScript NoSQL Serverless
函数计算产品使用问题之如何创建一个自定义运行时并指定Node.js版本
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
8天前
|
JavaScript 前端开发
js常用属性
js常用属性
6 0
|
16天前
|
JavaScript 前端开发
JavaScript常用的属性
JavaScript常用的属性