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

猎聘做简历的网站收费靠谱吗seo是什么工作

猎聘做简历的网站收费靠谱吗,seo是什么工作,洛阳网络营销推广,ui培训排名Vue中如何抽取部分代码到单独的ts文件 本文代码基于 简单示例 这段代码&#xff0c;是比较通用的代码&#xff0c;我想抽取成一个ts文件&#xff0c;来供其他地方调用。 const groupData reactive({groupList:[] as Array<GroupV2Response>,current:{} as GroupV2Re…

Vue中如何抽取部分代码到单独的ts文件

本文代码基于

简单示例

这段代码,是比较通用的代码,我想抽取成一个ts文件,来供其他地方调用。

const groupData = reactive({groupList:[] as Array<GroupV2Response>,current:{} as GroupV2Response,
})const groupFunc = new class {groupType = 1;loadGroupChildrenList = (parentGroupCode:string|null) => {axios.post("/gallery/group/query-group-children",{groupCode:parentGroupCode,type:this.groupType,}).then(resp => groupData.groupList = resp.data.data)}selectThisGroup = (group:GroupV2Response) => {groupData.current = group;this.loadGroupChildrenList(group.groupCode);}clearCurrentGroup = () => {groupData.current = {} as GroupV2Response;}
}

为了将这段代码抽取成一个 TypeScript 文件供其他地方调用,并且能够操作 Vue 的响应式变量,可以考虑以下几个步骤:

  1. 创建一个 TypeScript 文件:这个文件将包含类和响应式数据结构。
  2. 抽象出响应式状态:可以将响应式状态 (reactive 对象) 作为参数传递给类,使得这个类更加灵活和可重用。
  3. 导出类和响应式状态:从这个文件中导出你创建的类和函数,这样其他组件或文件就可以引用和实例化它。

步骤 1: 创建 TypeScript 文件

首先,创建一个新的 TypeScript 文件,例如命名为 GroupManager.ts

步骤 2: 抽象出响应式状态

你可以修改类,让它接收一个响应式状态对象作为参数。这样,类就不依赖于外部的具体响应式变量了。

// GroupManager.ts
import { reactive } from 'vue';
import axios from 'axios';
import { GroupV2Response } from './path-to-type-definitions'; // 确保引入了正确的类型定义// 定义响应式状态接口
interface GroupData {groupList: Array<GroupV2Response>;current: GroupV2Response;
}export class GroupManager {private groupData: GroupData;groupType = 1;constructor(groupData: GroupData) {this.groupData = groupData;}loadGroupChildrenList = (parentGroupCode: string|null) => {axios.post("/gallery/group/query-group-children", {groupCode: parentGroupCode,type: this.groupType,}).then(resp => this.groupData.groupList = resp.data.data);}selectThisGroup = (group: GroupV2Response) => {this.groupData.current = group;this.loadGroupChildrenList(group.groupCode);}clearCurrentGroup = () => {this.groupData.current = {} as GroupV2Response;}
}// 可以提供一个工厂函数来创建和初始化响应式数据
export function createGroupManager() {const groupData: GroupData = reactive({groupList: [],current: {} as GroupV2Response,});return { groupData, groupManager }; 
}

步骤 3: 使用抽取的文件

在其他 Vue 组件中,你可以导入并使用这个抽象化了的类:

// SomeComponent.vue
<script setup lang="ts">
import { createGroupManager } from './GroupManager';const { groupData, groupManager } = createGroupManager();
</script>

这样,你就能够在不同的组件中复用 GroupManager 类,并且每个组件可以有自己的响应式状态实例,这使得组件更独立、更易于管理。

相应外部事件

要使得 GroupManager 类在执行特定方法(如 selectThisGroup)时能够与其他代码或组件进行交互,例如触发事件,你可以采用几种设计策略。这些策略通常涉及使用事件发射(emitting events)、回调函数或利用 Vue 的全局事件总线。下面,我将提供几种方法来实现这种交互。

方法 1: 使用事件发射(EventEmitter)

你可以使用一个事件发射器(EventEmitter)来在你的类中触发事件。这可以通过使用 Node.js 的 events 模块或一个简单的第三方事件库来实现。

安装事件库(例如 mitt,一个轻量级的事件库):

npm install mitt

修改 GroupManager 类

// GroupManager.ts
import { reactive } from 'vue';
import axios from 'axios';
import mitt from 'mitt';
import { GroupV2Response } from './path-to-type-definitions';interface GroupData {groupList: Array<GroupV2Response>;current: GroupV2Response;
}export class GroupManager {public groupData: GroupData;groupType = 1;emitter = mitt();  // 创建事件发射器constructor(groupData: GroupData) {this.groupData = groupData;}loadGroupChildrenList = (parentGroupCode: string|null) => {axios.post("/gallery/group/query-group-children", {groupCode: parentGroupCode,type: this.groupType,}).then(resp => this.groupData.groupList = resp.data.data);}selectThisGroup = (group: GroupV2Response) => {this.groupData.current = group;this.loadGroupChildrenList(group.groupCode);this.emitter.emit('group-selected', group);  // 触发事件}clearCurrentGroup = () => {this.groupData.current = {} as GroupV2Response;this.emitter.emit('group-cleared');  // 触发事件}on(eventName: string, handler: (event?: any) => void) {this.emitter.on(eventName, handler);  // 提供方法来监听事件}off(eventName: string, handler: (event?: any) => void) {this.emitter.off(eventName, handler);  // 提供方法来移除监听}
}

使用 GroupManager 类

<script setup lang="ts">
import { createGroupManager } from './GroupManager';const { groupData, groupManager } = createGroupManager();groupManager.on('group-selected', (group) => {console.log('Selected group:', group);
});groupManager.on('group-cleared', () => {console.log('Group cleared');
});onUnmounted(() => {// 确保在组件卸载时移除事件监听器,避免内存泄漏groupManager.off('group-selected', handler);groupManager.off('group-cleared', handler);
});
</script>

方法 2: 使用回调函数

另一种方法是在 GroupManager 类的构造函数中接受一个或多个回调函数作为参数,当发生特定的动作时调用这些函数。

// GroupManager.ts
export class GroupManager {public groupData: GroupData;groupType = 1;private onSelectGroup: (group: GroupV2Response) => void;private onClearGroup: () => void;constructor(groupData: GroupData, onSelectGroup: (group: GroupV2Response) => void, onClearGroup: () => void) {this.groupData = groupData;this.onSelectGroup = onSelectGroup;this.onClearGroup = onClearGroup;}selectThisGroup = (group: GroupV2Response) => {this.groupData.current = group;this.loadGroupChildrenList(group.groupCode);this.onSelectGroup(group);}clearCurrentGroup = () => {this.groupData.current = {} as GroupV2Response;this.onClearGroup();}
}

在这种设计中,你可以在创建 GroupManager 实例时提供具体的回调函数,使得类的行为更加灵活。这种方式适合于较为简单的交互场景,且当交互逻辑较为固定时。

通过上述两种方法,你可以使 GroupManager 类在执行其内部方法时与外部代码有效交互,根据具体的应用场景选择适合的设计模式。

http://www.hrbkazy.com/news/12138.html

相关文章:

  • 西安建立公司网站的步骤重庆关键词优化平台
  • 秦皇岛市教育考试院官网北京网站优化排名推广
  • 做网站或者app购买网站域名
  • 广州海珠区最新疫情dz论坛如何seo
  • 顺德门户网站建设公司惠州seo整站优化
  • 福建做网站公司制作一个网站步骤
  • 怎么管理网站的内容江东怎样优化seo
  • php网站制作实例教程网络运营具体做什么
  • 鹤壁做网站价格今日热搜排行第一名
  • 东营企业网站制作刚刚发生了一件大事
  • 网站做营销推广公司软文怎么写
  • 平江外贸网站推广找哪家电商运营入门基础知识
  • 有哪些做的好的营销型网站网站是怎么优化的
  • 安康市住房和城乡建设局网站关键词推广方法
  • 网站被host重定向系统清理优化工具
  • 站长工具怎么关掉seo入门培训班
  • 企业网站备案价格医院线上预约
  • 汽车之家如何做团购网站北京网
  • 毕设 网站开发的必要性系统优化软件哪个最好的
  • 软件生命周期七个阶段北京企业网站seo平台
  • 局网站建设方案word保定seo推广
  • 网络营销论文范文重庆网站seo公司
  • 余姚什么网站做装修比较好网络营销策划方案模板
  • 网站基本参数设置模块重庆seo顾问
  • 网站开发bug写文章免费的软件
  • 新建网址seo属于什么职业部门
  • 大型网站许多网站厦门seo培训
  • 今日重庆发生的重大新闻西安网络seo公司
  • 著名的国外设计网站最新seo自动优化软件
  • 荆门建网站费用成都业务网络推广平台