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接收父组件的方法和参数,进行调用

相关推荐
老神在在0013 小时前
SpringMVC1
java·前端·学习·spring
萌萌哒草头将军5 小时前
🚀🚀🚀React Router 现在支持 SRC 了!!!
javascript·react.js·preact
薛定谔的算法6 小时前
# 从0到1构建React项目:一个仓库展示应用的架构实践
前端·react.js
Tina学编程6 小时前
HTML基础P1 | HTML基本元素
服务器·前端·html
一只小风华~7 小时前
Web前端:JavaScript和CSS实现的基础登录验证功能
前端
90后的晨仔7 小时前
Vue Router 入门指南:从零开始实现前端路由管理
前端·vue.js
LotteChar7 小时前
WebStorm vs VSCode:前端圈的「豆腐脑甜咸之争」
前端·vscode·webstorm
90后的晨仔7 小时前
零基础快速搭建 Vue 3 开发环境(附官方推荐方法)
前端·vue.js
洛_尘8 小时前
Java EE进阶2:前端 HTML+CSS+JavaScript
java·前端·java-ee
孤独的根号_8 小时前
Vite背后的技术原理🚀:为什么选择Vite作为你的前端构建工具💥
前端·vue.js·vite