React+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

然后 输出在控制台

我们再次运行项目 然后点击按钮

结果如下

也是没有任何问题

相关推荐
Mintopia12 小时前
🚀 一文看懂 “Next.js 全栈 + 微服务 + GraphQL” 的整体样貌
前端·javascript·全栈
Mintopia12 小时前
🧬 医疗Web场景下,AIGC的辅助诊断技术边界与伦理
前端·javascript·aigc
半桶水专家12 小时前
父子组件通信详解
开发语言·前端·javascript
Watermelo61712 小时前
从vw/h到clamp(),前端响应式设计的痛点与进化
前端·javascript·css·算法·css3·用户界面·用户体验
寻星探路12 小时前
测试开发话题10---自动化测试常用函数(2)
java·前端·python
Moment12 小时前
快到  2026  年了:为什么我们还在争论  CSS 和 Tailwind?
前端·javascript·css
梵得儿SHI13 小时前
Vue 核心语法详解:模板语法中的绑定表达式与过滤器(附 Vue3 替代方案)
前端·javascript·vue.js·插值语法·vue模板语法·绑定表达式·过滤器机制
江城开朗的豌豆13 小时前
TypeScript枚举:让你的代码更有"选择权"
前端·javascript
江城开朗的豌豆13 小时前
TypeScript接口:打造你的代码“契约”之道
前端·javascript
江城开朗的豌豆13 小时前
TypeScript类:面向对象编程的超级武器
前端·javascript