forwardRef 中React父组件控制子组件的实现代码
更新时间:2024年01月29日 14:31:19 作者:宝子向前冲
forwardRef 用于拿到父组件传入的 ref 属性,这样在父组件便能通过 ref 控制子组件,这篇文章主要介绍了forwardRef - React父组件控制子组件的实现代码,需要的朋友可以参考下
forwardRef 中React父组件控制子组件
作用:forwardRef 用于拿到父组件传入的 ref 属性,这样在父组件便能通过 ref 控制子组件。
父组件:
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,调用在子组件中的方法和属性
子组件:
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接收父组件的方法和参数,进行调用
关于React函数式组件父组件通过ref调用子组件的方法
使用useImperativeHandle+forwardRef,后者可以不使用
父子组件代码:
import {useRef} from 'react' import Child from "./child" //父组件 const Parent=()=>{ const cRef=useRef() return( const getChild=()=>{ cRef.current.getdata()//调用子组件的getdata方法 } <Chile cRef={cRef} />//子组件 <BUtton onClick={getChild}/> ) } export default Parent //子组件 import {useImperativeHandle} from 'React' type Cprops={ cRef } const Child=({cRef})=>{ useImperativeHandle(cRef,()=>({ //这里写上子组件的方法 getdata() })) }
到此这篇关于forwardRef - React父组件控制子组件的文章就介绍到这了,更多相关React父组件控制子组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
React源码分析之useCallback与useMemo及useContext详解
这篇文章主要介绍了React useCallback与useMemo及useContext源码分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧2022-11-11React Native中WebView与html双向通信遇到的坑
这篇文章主要介绍了React Native中WebView与html双向通信的一些问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧2023-01-01react-native 配置@符号绝对路径配置和绝对路径没有提示的问题
本文主要介绍了react-native 配置@符号绝对路径配置和绝对路径没有提示的问题,文中通过图文示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-01-01
最新评论