当前位置: 首页 > news >正文

React 使用ref属性调用子组件方法(也可以适用于父子传参)

注意:①需使用hooks函数组件        ②使用了antDesign组件库(可不用)

如何使用

父组件代码

import React, { useState, useRef, useEffect } from 'react';
import { Button } from 'antd';
import Child from './components/child';export default () => {const childRef = useRef();//使用ref调用子组件的方法const handleOpen = () => {childRef.current.showModal('Hello word');};return (<div><Button type="primary" onClick={handleOpen}>点我</Button><Child ref={childRef} /></div>);
};

子组件代码

import React, { useImperativeHandle, forwardRef, useState, useRef, useEffect } from 'react';
import { Modal } from 'antd';const ChildComponent = forwardRef((props, ref) => {const [isModalOpen, setIsModalOpen] = useState(false);const [data, setData] = useState('');//弹框打开const showModal = async (data) => {setIsModalOpen(true);setData(data);};//弹框确定const handleOk = async () => {setIsModalOpen(false);};//弹框取消const handleCancel = () => {setIsModalOpen(false);};// 通过第二个参数ref来控制暴露哪些方法useImperativeHandle(ref, () => ({showModal,}));return (<div><Modal title="子组件" width={800} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}><div>{data}</div></Modal></div>);
});export default ChildComponent;

注:本人前端小白 ,如有不对的地方还请多多指教


http://www.mrgr.cn/news/7786.html

相关文章:

  • FastAPI+React18开发通用后台管理系统用户功能实战
  • staticHeader(静态标头)
  • BUG——GT911上电后中断一直触发
  • 数据集笔记: FourSquare - NYC and Tokyo Check-ins
  • bedtools安装与使用(v2.31.1)生物信息学工具29
  • uniapp+vue3的ifdef实现多端配置客服消息
  • 21.2 Netty聊天会话管理
  • SOMEIP_ETS_061: Sending_two_SOMEIP_Messages_in_a_row
  • 启用 UFW 防火墙后如何打开 80 和 443 端口?
  • 【Leetcode 1805 】 字符串中不同整数的数目—— 双指针
  • 基于Springboot/Vue的企业内部培训考试系统
  • ML307R_APP_DEMO_SDK TCP/UDP使用介绍
  • Java 调整字符串,验证码生成
  • Redis持久化
  • ViT篇外:NVIDIA Llama-3.1-Minitron 4B
  • 【vue】编辑器段落对应材料同步滚动交互
  • 搭建springboot项目,并解决项目出现红色J问题
  • [LitCTF 2023]1zjs
  • MyBatis配置允许批量插入或更新数据
  • DevExpress中Blazor部分学习