React 父组件调用子组件方法

18 篇文章 0 订阅

solution

Q:React中,父组件如何调用子组件的方法?

task

利用props传值解决,不使用ref
我们知道父组件可以靠子组件调用函数传参作为返回值,那么同样道理,函数也能作为参数从子组件传回父组件,这样,在父组件中就能调用子组件的方法了

action

父组件Expenses中定义函数handleClick,将其作为参数传入子组件CommonText,子组件接收父组件传入的handleClick并在自己的点击事件中执行,传入事先定义好的方法test作为形参
执行程序
在父组件的handleClick方法中接收子组件传入的参数,就能执行我们子组件的方法了
父组件Expenses代码

import CommonText from "../components/commonText";
import { PureComponent} from "react";
class Expenses extends PureComponent {
    constructor(props) {
        super(props);
    }
    handleClick = (func) => {
        func()
    }
    render() {
        return (
            <main style={{padding: "1rem 0"}}>
                <CommonText handleFunc={this.handleClick}/>
                <h2>
                    泥嚎,我是小陈的第二个页面
                </h2>
            </main>
        )
    }
}
export default Expenses;

子组件CommonText代码

import {PureComponent} from "react";
class CommonText extends PureComponent {
    constructor(props) {
        super(props);
    }
    test = () => {
        console.log(1)
    }
    handleTest = () => {
        const {handleFunc} = this.props;
        handleFunc(this.test)
    }
    render() {
        return (
            <div onClick={this.handleTest}>
                <h2>我是子组件commonText</h2>
            </div>
        );
    }
}
export default CommonText;

result

以前学习父子组件通信时,没有考虑到这一层,前不久遇到了这个问题,刚好今天来付诸实践后得到答案,也能加深自己对父子组件通信的理解

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值