ts定义事件

本文探讨了如何在TypeScript中定义和处理事件,重点介绍了回调函数在事件触发时的角色,帮助理解如何在类型安全的环境下进行事件编程。

注册监听
initiallize(){

AppCommon.Messenger.on('cellselected', (cell) => { this.viewerControl_CellSelected(cell) });
}

回调函数:

    protected viewerControl_CellSelected(cell: MedViewerControlCell) {
        this.commandSender.sendCellOperation(null, 'SelectedCellChanged', cell.cellName);
    }

触发事件

    set isSelected(value) {
        if (this._isSelected == value) {
            return;
        }
        this._isSelected = value;
        if (value) {
            AppCommon.Messenger.trigger('cellselected', this);
        }
    }
export class Messenger {
    private static _callbacks: any = {};

    // 实现基本是从\node_modules\abp-web-resources\Abp\Framework\scripts\abp.js 中抽取

    static on(eventName: string, callback: (...args: any[]) => void): void {
        if (!this._callbacks[eventName]) {
            this._callbacks[eventName] = [];
        }

        this._callbacks[eventName].push(callback);
    }

    static off(eventName: string, callback: (...args: any[]) => void) : void {
        let callbacks = this._callbacks[eventName];
        if (!callbacks) {
            return;
        }

        let index = -1;
        for (let i = 0; i < callbacks.length; i++) {
            if (callbacks[i] === callback) {
                index = i;
                break;
            }
        }

        if (index < 0) {
            return;
        }

        this._callbacks[eventName].splice(index, 1);
    }

    static trigger(eventName: string, ...args: any[]): void {
        let callbacks = this._callbacks[eventName];
        if (!callbacks || !callbacks.length) {
            return;
        }

     
        for (let i = 0; i < callbacks.length; i++) {
            callbacks[i].apply(this, args);
        }

    }
}
在React中,`className`是一个属性,用于指定元素的CSS类名。你可以在HTML元素上使用它,例如`<div className="myClass"></div>`。 关于TypeScript(TS)的定义,它是一种JavaScript的超集,添加了静态类型检查和其他功能。在React中使用TS,你可以为组件添加类型定义,这样编译器就可以提供有用的错误检查和类型提示。例如,你可以为React组件添加一个类型定义文件(`.tsx`文件),其中包含组件的属性类型和其他相关信息。 如果你想在React中使用TS和`className`,你可以按照以下步骤操作: 1. 安装React和TypeScript:首先,你需要在你的项目中安装React和TypeScript。你可以使用npm或yarn来安装它们。 2. 创建React组件并使用TS:创建一个React组件,并在组件中定义属性类型。例如,你可以创建一个名为`MyComponent.tsx`的组件,并使用TS定义它。 ```typescript import React from 'react'; interface Props { className: string; // 其他属性... } const MyComponent: React.FC<Props> = ({ className }) => { // 组件的逻辑... }; export default MyComponent; ``` 在上面的代码中,我们定义了一个名为`MyComponent`的React组件,并使用TS定义它的属性类型。我们指定了`className`属性的类型为字符串。 3. 在HTML元素中使用组件并传递属性:现在,你可以在HTML元素中使用`MyComponent`组件,并传递`className`属性。例如: ```html <div className="myClass" /> ``` 在上面的代码中,我们使用`<div>`元素来渲染`MyComponent`组件,并传递了`className="myClass"`属性。由于我们在组件中定义了`className`属性的类型为字符串,因此TypeScript编译器会提供类型检查和错误提示。 这就是在React中使用TS和`className`的基本介绍。你可以根据需要进一步探索TS的其他功能和React的更多高级特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值