// 子组件
import React, { useEffect, useImperativeHandle } from "react";
const Index = (props: ChooseDocumentProps, ref: any) => {
// ...
const [
{
showModal,
},
setState,
] = useImmer<ChooseDocumentState>({
showModal: false
});
// ...
useImperativeHandle(ref, () => ({
setVisible(status:boolean) {
setState(st => {
st.showModal = status;
})
},
}));
// ...
}
export default React.forwardRef(Index);
// 父组件调用子组件
// ...
const ChooseDocumentRef = useRef();
// ...
ChooseDocumentRef?.current?.setVisible(true);
// ...
<ChooseDocument ref={ChooseDocumentRef}/>
参考:Hooks 的 useImperativeHandle 怎么用? - 简书 (jianshu.com)