React父组件获取子组件方法
在react的class组件中父组件调用子组件方法直接用ref就可以拿到子组件这个实例,但是在function中,api并没有这么明确,我们需要借助hooks去帮助我们拿到这个实例。
本篇介绍如何运用useRef 与 useImperativeHandel 方法结合
函数组件实现
子组件代码
import { Input } from 'antd';
import React, { useImperativeHandle, useRef } from 'react';
export default function ChildInput ({onRef}: any) {
const inputRef = useRef(null);
useImperativeHandle(onRef, () => inputRef.current);
return (
<div >
<Input ref={inputRef}/>
</div>
)
}
父组件代码
import ChildInput from './ChildInput';
import { Button } from 'antd';
import React, { useRef } from 'react';
export default () => {
const inputRef = useRef([]);
const onFinish = () => {
console.log('获取子组件值', inputRef.current.value);
}
return (
<div>
<Button disabled={disabled} type='primary' onClick={onFinish}>保存</Button>
<ChildInput onRef={inputRef} />
</div>
);
};
组件中生成多个子组件,遍历多个ref
子组件如上父组件代码
import ChildInput from './ChildInput';
import { Button } from 'antd';
import React, { useRef } from 'react';
import { InputList } from '@/constants';
export default () => {
const inputRef = useRef([]);
const onFinish = () => {
console.log('获取全部子组件', inputRef.current);
}
return (
<div>
<Button disabled={disabled} type='primary' onClick={onFinish}>保存</Button>
{
InputList.map((item,index)=>{
return (
<ChildInput
key={item.id}
//根据索引添加多个ref
onRef={(f: any) => { inputRef.current[index] = f}}
/>
)
})
}
</div>
);
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2021-10-12 browserslist 目标浏览器配置表
2021-10-12 升级npm