forwardRef - React父组件控制子组件

作用:forwardRef 用于拿到父组件传入的 ref 属性,这样在父组件便能通过 ref 控制子组件。

父组件:

javascript 复制代码
 import { useRef } from "react";
 import About from "./comment/About"; //引入子组件
 function App() {
   const typeRef = useRef(); 
 ​
   const bool = false;//定义一个参数
     
   const toggle = () => {
     console.log(typeRef)
   //调用 typeRef.current里面的数据
     typeRef.current.show();
     typeRef.current.close();
     console.log(typeRef.current.a);
   };
   // 回调函数
   const select = (item) => {
     console.log( item, "typeRef");
   };
   return (
     <>
       <About ref={typeRef} onSelect={select} parameter={bool}></About>
       <button onClick={toggle}>点击</button>
     </>
   );
 }
 ​
 export default App;
  • 父组件可以通过props向子组件传递参数,和方法。
  • 父组件通过 typeRef.current,调用在子组件中的方法和属性

子组件:

javascript 复制代码
import React, { forwardRef } from "react";
 ​
 /**
     forwardRef渲染函数只接受两个参数:props和ref,必须要传这两个参数
 */
 const About = forwardRef((props, ref) => {
   
  //向ref.current添加属性,在父组件中调用
   ref.current = {
     show: () => {
       console.log("show");
     },
     close: () => {
       console.log("close");
     },
      a:false,
   };
   const choseType = () => {
    console.log(props);
     //调用props里的方法和参数
     props.onSelect(1);
     console.log(props.parameter);
   };
   return <div onClick={choseType}>About</div>;
 });
 ​
 export default About;
 ​

子组件通过props接收父组件的方法和参数,进行调用

相关推荐
道友可好17 分钟前
AI 是最好的混乱放大器:代码熵管理实战
前端·人工智能·后端
猩猩程序员1 小时前
前端学习 AI Agent 开发
前端
Younglina2 小时前
打了3年羽毛球球才发现:我对自己的装备和胜率一无所知
前端·后端
风骏时光牛马2 小时前
Bash脚本高阶实战与常见报错完整代码案例详解
前端
kartjim2 小时前
我用 AI 一小时写了一个世界杯数据可视化平台|前端 VibeCoding 初体验
前端·程序员·ai编程
lichenyang4532 小时前
从一个 WebView Demo 开始,理解 ASCF 小程序底座到底在做什么
前端
牧艺2 小时前
用 Next.js 搭建 AI Agent 前端编排:从 Plan 到 SSE Trace 的完整实践
前端·agent
行者全栈架构师2 小时前
UniApp集成vk-uview-ui组件库详解:打造高效UI开发体验
前端·vue.js
林希_Rachel_傻希希2 小时前
js里面的proxy理解。以及vue3响应式数据设计底层
前端·javascript·面试
sunrains2 小时前
uniapp x 动态Tabbar(切换无闪烁)+动角标+主题切换+自定义tabbar页面导航栏样式设置 支持服务端动态配置根据角色动态设置Tabbar
前端