typescript 添加事件-如何在React Typescript项目中的类组件中定义storm方法?

自己在“React TS3 Topic”中创建一个类组件。 我们学习了如何在React中以TS的形式定义一个类组件(class component)以及什么是JSX。 在这篇文章中,作者将带你了解如何在React中使用TS来定义类组件。

在 JSX 中简单定义风暴

最简单的形式是在 JSX 中添加风暴。 上一节我们已经熟悉了如何在JSX中添加属性typescript 添加事件,所以很自然的想到我们可以在JSX中添加storm:

1、第一步根据上一节的反例,我们添加按钮的点击风暴,并为确认按钮添加点击风暴属性,代码如下:


当我们单击按钮时,将调用handleOkClick 方法。

2.接下来,我们创建handleOkClick方法:

private handleOkClick() {
 console.log("Ok clicked");
}

typescript 添加事件_html按钮添加点击事件_百度地图添加事件

3.接下来,让我们运行我们的项目

通过启动命令来运行项目,我们点击确定按钮,你会看到如下图所示的提示:

关于这个的问题

上述的turtoil方法仍然存在一个隐藏的风险,比如当我们调用这个属性时,我们看看会发生什么。

1、首先我们改变一下暴风雨的点击方式:

private handleOkClick() {
 console.log("Ok clicked", this.props);
}

然后我们运行程序,尝试继续并单击确认按钮,如果不出意外,您将看到如下所示的错误消息:

这样带来的问题是,this无法指向我们当前组件的类,说明相关属性未定义。 常见的解决办法就是将这些函数改成箭头函数,利用箭头函数this的穿透性来解决。 关于箭头函数的使用typescript 添加事件,作者的文章《ES6基础》箭头函数(Arrow function)有详细的介绍,如果不明白的可以点击查看。

2.接下来我们将函数改为箭头函数

private handleOkClick = () => {
 console.log("Ok clicked", this.props);
};

我们来运行一下项目,你仍然会在页面控制台中看到如下输出,这很好,没有如你所愿地报错:

3、接下来我们在取消按钮中添加取消风暴:


4.最后我们定义取消按钮风暴的方式

private handleCancelClick = () => {
 console.log("Cancel clicked", this.props);
};

总而言之,为了防止由此带来的风险问题,我们可以利用箭头函数来有效的防止这个问题。 接下来我们继续讲一下如何更好的组织storm定义中的逻辑,并以属性的形式进行传递,这样对于组件来说更加方便。 可重用性。

定义socket中的storm属性

在上一篇文章中,我们以套接字的形式定义了属性。 接下来,我们以定义socket的形式来定义storms。 示例代码如下:

1、首先按照下一篇文章的例子,我们在socket中添加如下两个要实现的方法,示例如下:

interface IProps {
 title: string;
 content: string;
 cancelCaption?: string;
 okCaption?: string;
 onOkClick: () => void;
 onCancelClick: () => void;
}

我们定义的storm属性是强制的,所以在App.tsx文件中会提示你这两个属性没有定义,稍后我们会解决这个问题。

2、接下来我们在Confirm.tsx文件中实现socket相关技能的定义。 示例代码如下:

private handleCancelClick = () => {
this.props.onCancelClick();
};
private handleOkClick = () => {
this.props.onOkClick();
};

3、接下来我们在App.tsx中定义相关技能,并修改出现的错误。 示例代码如下:

 const handleCancelConfirmClick = () => {
 console.log("Cancel clicked");
 };
 const handleOkConfirmClick = () => {
 console.log("Ok clicked");
 };

4.最后我们在Confirm组件中添加storm属性


修改完成后,我们启动项目,然后点击组件的确认和取消按钮,你会看到如下:

部分

今天的文章到此结束。 内容不算太多。 我们已经学习了如何使用 TS 在 React 中定义 Storm,并以箭头函数的形式实现 Storm。 在下一篇文章中,作者将继续介绍,如何在React中以TS的形式定义State。

本系列文章,未完待续

《React TS3专题》教你如何创建React TypeScript3项目

《React TS3专题》自己创建一个类组件