React+Typescript 父子组件事件传值

news/2024/7/15 18:38:51 标签: react.js, typescript, 前端

好 之前我们将 state 状态管理简单过了一下
那么 本文 我们来研究一下事假处理

点击事件上文中我们已经用过了 这里 我们就不去讲了 主要来说说 父子之间的事件

我们直接来编写一个小dom
我们父组件 编写代码如下

typescript">import Hello from "./components/hello";

function App() {
  const obtain = () => {
    console.log("调用了 父组件的obtain");
  };

  return (
    <div className="App">
      <Hello title="高阶组件" age={20} onObtain={obtain} />
    </div>
  );
}

export default App;

这里 我们定义了一个obtain函数
然后 给子组件绑定了一个 onObtain 事件 触发的函数时 指向本组件的obtain函数

然后 我们子组件编写代码如下

typescript">import * as React from "react";

interface IProps {
    title: string,
    age: number,
    onObtain: any
}

interface IState {
    count:number
}

export default class hello extends React.Component<IProps,IState> {

    public readonly state: Readonly<IState> = {
        count: 520
    }
    
    public constructor(props:IProps){
        super(props);
        this.clickHide = this.clickHide.bind(this);
        this.requestParent = this.requestParent.bind(this);
    }

    public clickHide(){
        this.setState({
            count: 200
        })
    }

    public requestParent() {
        this.props.onObtain();
    }


    public render() {
        return (
            <div>
                <div>{ this.state.count }</div>
                <button onClick = { this.clickHide }>修改</button>
                <button onClick = { this.requestParent }>调用父组件函数</button>
            </div>
        )
    }
}

这里 我们写了个requestParent 点击按钮时触发
这里需要注意 我们函数直接在IProps中声明一下就好了 和 父组件传递的参数 props 一样
然后 我们为了方便类型直接给个any 任意类型
然后 当用户点击触发requestParent按钮时 我们调用父组件给的onObtain

我们运行项目然后点击按钮
在这里插入图片描述
可以看到 这个位置就没有任何问题 成功触发了

然后 我们进一步
写一个传递参数的
子组件的requestParent函数改成

typescript">public requestParent() {
    this.props.onObtain("小猫猫");
}

这样 我们就往onObtain中传了一个字符串 值为 小猫猫

然后 我们父组件的 obtain 改成这样

typescript">const obtain = (name:string) => {
   console.log(name);
};

这里 我们给obtain设置要接收一个参数 字符串类型的 键定义为name
然后 输出在控制台
我们再次运行项目 然后点击按钮
结果如下
在这里插入图片描述
也是没有任何问题


http://www.niftyadmin.cn/n/4960560.html

相关文章

采用 UML 对软件系统进行建模的基本框架

UML 包括一些可以相互组合为图标的图形元素&#xff0c; 通过提供不同形式的图形来 表述从软件分析开始的软件开发全过程的描述&#xff0c;一个图就是系统架构在某个侧面的 表示&#xff0c;所有的图组成了系统的完整视图。UML 主要提供了以下五类图&#xff1a; &#xff…

python脚本——将多个文件夹下的文件全部剪切到一个目录下

背景&#xff1a;需要将多个文件放到同一个文件夹下时&#xff0c;手动一个个移动麻烦。使用以下程序只需要选择需要剪切的文件夹和存放的文件夹&#xff0c;就可一次完成剪切移动。 语言&#xff1a;python 3 用法&#xff1a;点击运行后&#xff0c;弹出窗口选择需要剪切文…

<深度学习基础> 激活函数

为什么需要激活函数&#xff1f;激活函数的作用&#xff1f; 激活函数可以引入非线性因素&#xff0c;可以学习到复杂的任务或函数。如果不使用激活函数&#xff0c;则输出信号仅是一个简单的线性函数。线性函数一个一级多项式&#xff0c;线性方程的复杂度有限&#xff0c;从…

UE4 材质学习笔记

CheapContrast与CheapContrast_RGB都是提升对比度的&#xff0c;一个是一维输入&#xff0c;一个是三维输入&#xff0c;让亮的地方更亮&#xff0c;暗的地方更暗&#xff0c;不像power虽然也是提升对比度&#xff0c;但是使用过后的结果都是变暗或者最多不变&#xff08;值为1…

NLP与大模型主题全国师资培训班落地,飞桨持续赋能AI人才培养

为了推动大模型及人工智能相关专业人员的培养&#xff0c;8月11日-8月13日&#xff0c;由中国计算机学会主办、机械工业出版社、北京航空航天大学、百度飞桨联合承办 “CCF群星计划之文心高校行- NLP与大模型”主题师资培训班&#xff08;以下简称培训班&#xff09;在北京天信…

ICCV 2023 | 合成图前景物体检索

©PaperWeekly 原创 作者 | 隋佳成 单位 | 上海交通大学BCMI实验室 图像合成是照片编辑及图形设计中的一项任务&#xff0c;即将不同来源的前景图像与背景图像融合在一起&#xff0c;生成新的合成图。但是&#xff0c;简单地将不同来源的前景图像与背景场景拼接&#xff…

自然语言处理从入门到应用——LangChain:链(Chains)-[通用功能:SequentialChain和TransformationChain]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 SequentialChain 在调用语言模型之后&#xff0c;下一步是对语言模型进行一系列的调用。若可以将一个调用的输出作为另一个调用的输入时则特别有用。在本节中&#xff0c;我们将介绍如何使用顺序链来实现这一点。顺序…

基于MATLAB开发AUTOSAR软件应用层Code mapping专题-part 4 Data store标签页介绍

这篇文章我们继续讲解code-mapping的Data stores页,这个页的内容对应的SIMULINK中的模块是Data store memory。 我们首先在模型中创建一个Data store memory模块,如图: Data store memory模块的作用相当于一个全局变量,我们可以在模型的功能逻辑里将一个信号存进去,在另…