函数式组件调用ref传值
-
在父组件中要调用子组件传过来的值
父组件代码:
//Parent.jsx import React,{ useRef } from 'react' import Children from './Children.jsx' function Parent(){ //创建ref节点 const childRef = useRef(null); //获取子组件的值 const getCode = () => { console.log(childRef.current.sendCode()); } return ( <> <Children ref={childRef}/> <button className="btn btn_black btn_primary" onClick={getCode} > 点击获取子组件的数据 </button> </> ) } export default Parent在父组件中使用ref节点 使用xxx.current.子组件中定义的方法获取
-
在子组件中定义方法返回值
-错误我写的子组件代码:
//import React,{ useState } from 'react' //function Children(){ // const [data,setData] = useState(''); // const sendCode = () => { // return data; // } // return ( // <input onChange={(value)=>{setDate(value)}} /> // ) //} //export default Children通过百度查资料 正确子组件代码
//Children.jsx import React,{ forwardRef, useState, useImperativeHandle } from 'react' function Children(ref){ //使用useImperativeHandle包裹要传的方法的值------------重要代码 useImperativeHandle(ref, () => { return { sendCode() { return { fileType: 'image', imageUrl: imageUrl, sorting: sorting, startTime: startTime, endTime: endTime, operationType: operationType, operationUrl: operationUrl }; } }; }); const [data,setData] = useState(''); return ( <input onChange={(value)=>{setDate(value)}} /> ) } //需要使用forwardRef包裹组件-------------------重要代码 Children = forwardRef(Children); export default Children总结:
在父组件中使用ref属性创建节点 可以再子组件中定义方法返回数据,但是需要使用forwardRef & useImperativeHandle包裹子组件内容,在父组件中可以使用xxxx.curren.method()获取子组件传过来的数据
本文介绍了如何在React的函数式组件中使用ref传递值,强调了在父组件调用子组件方法时,需要在子组件内部使用forwardRef和useImperativeHandle。通过示例代码展示了错误和正确使用这两个API的方式,总结了正确传递和获取子组件数据的方法。
1095

被折叠的 条评论
为什么被折叠?



