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

【js】class中constructor如何接收动态值,如timeRange

问题分析

  1. Console.vue中定义调用js类PathHeatmapTool,并传递两个参数

    tools['path_heatmap'] = new Models.PathHeatmapTool(viewport, props.timeRange);
    
  2. PathHeatmapTool构造函数如下:

    export class PathHeatmapTool {constructor(view, timeRange) {this.view = view;this.timeRange = timeRange;}enable() {heatmapVisible('path', this.timeRange);}// ...
    }
    
  3. 问题:当 props.timeRange 在父组件中发生变化时,PathHeatmapTool 实例中的 this.timeRange 不会自动更新。

解决方案

方案1:修改 PathHeatmapTool 类以响应 timeRange 变化(推荐)

修改 src/models/tools/PathHeatmapTool.js 文件:

import { Event } from '../state';
import { heatmapVisible } from '../HeatmapManager';export class PathHeatmapTool {constructor(view, getTimeRange) {this.view = view;// 接收一个函数而不是直接的值,以便始终获取最新值this.getTimeRange = getTimeRange;}enable() {// 调用函数获取最新的 timeRange 值heatmapVisible('path', this.getTimeRange());}disable() {heatmapVisible('noPath');}isSwitch() {return true;}
}

然后在调用时修改初始化方式:

// 将原来的
tools['path_heatmap'] = new Models.PathHeatmapTool(viewport, props.timeRange);// 修改为
tools['path_heatmap'] = new Models.PathHeatmapTool(viewport, () => props.timeRange);
方案2:在 Console.vue 中监听 timeRange 变化并更新热力图

在 [Console.vue](file:///Users/gegewu/projects/sorting_app_2.0/src/views/entry/Console.vue) 中添加一个 watcher:

// 添加对 timeRange 变化的监听
watch(() => props.timeRange,(newTimeRange) => {// 如果热力图工具当前是启用状态,则重新启用以应用新的时间范围if (curTool === 'path_heatmap' && tools['path_heatmap']) {tools['path_heatmap'].enable();}},{ deep: true } // 深度监听数组变化
);

同时修改 [PathHeatmapTool]类以接收新的 timeRange:

import { Event } from '../state';
import { heatmapVisible } from '../HeatmapManager';export class PathHeatmapTool {constructor(view, timeRange) {this.view = view;this.timeRange = timeRange;}// 添加更新 timeRange 的方法updateTimeRange(timeRange) {this.timeRange = timeRange;}enable() {heatmapVisible('path', this.timeRange);}disable() {heatmapVisible('noPath');}isSwitch() {return true;}
}

并在 Console.vue 中更新初始化代码:

tools['path_heatmap'] = new Models.PathHeatmapTool(viewport, props.timeRange);// 添加 watcher
watch(() => props.timeRange,(newTimeRange) => {// 更新工具中的 timeRangeif (tools['path_heatmap']) {tools['path_heatmap'].updateTimeRange(newTimeRange);// 如果工具当前启用,重新启用以应用新时间范围if (curTool === 'path_heatmap') {tools['path_heatmap'].enable();}}},{ deep: true }
);
http://www.dtcms.com/a/532216.html

相关文章:

  • Gorm(四)删除操作
  • XSLT `<sort>` 标签详解
  • h5游戏免费下载:读心术
  • 免费建站有哪些网站注册公司需要怎么注册
  • GDB Server使用方法(基于vscode的可视化调试)
  • Retrieval Augmented Time Series Forecasting 论文笔记
  • Vscode中选择Conda环境
  • PyCharm无法启动jupyter server问题的解决
  • 手机考勤软件哪个好?10款APP测评
  • 小游戏网站建设网络规划设计师资格证
  • 网站建设钅金手指排名十五网站做app服务端
  • Docker 拉取镜像超时问题排查与解决实录
  • 找个做游戏的视频网站好WordPress加速优化方案
  • Kafka 生产者详解(上):消息发送流程与API,分区,吞吐量与数据可靠性
  • Chrome扩展安装插件教程,Edge安装插件扩展教程,浏览器安装扩展程序方法
  • 基于Swin Transformer的糖尿病视网膜病变影像分类与诊断系统
  • 从零开始:C++ 线程池 TCP 服务器实战(续篇)
  • 免费招工人在哪个网站传奇合成版2合1雷霆版
  • AJAX家政系统同城服务多商家小程序源码
  • 《string 类模拟实现(收尾):传统与现代写法对比及底层机制探析》
  • ISCSI存储服务
  • 选择排序详解
  • 暖色网站模板wordpress 翻译 每页
  • ProcDump 学习笔记(6.9):MiniPlus 转储(-mp)——轻量却够用的现场证据
  • 特乐网站建设如何用源码搭建网站源码
  • Java 大视界 -- Java 大数据实战:分布式架构重构气象预警平台(2 小时→2 分钟)(428)
  • 洗牌算法讲解——力扣384.打乱数组
  • 芋道源码:VUE3部署:避坑--验证码不现显示,管理后台无法访问后端接口等,完善中。。。
  • 前端速通—ajax篇
  • 济南建立网站湖南建筑工程信息平台