两点前提:
- 函数式组件, 使用 react hooks
- 子组件导出方法, 供父组件在恰当的时机(想什么时候就什么时候)调用
我唯一想到的方法是使用 ref, 如下, 但是这也太 TM 丑了, 求助大佬们
type ChildFunc = () => number
// eslint-disable-next-line react/display-name
const Child = React.forwardRef((props, ref) => {
// eslint-disable-next-line no-param-reassign
(ref as React.MutableRefObject<ChildFunc | undefined>).current = () => 5
return <>I am child</>
})
// Parent
function Parent() {
const funcRef = useRef<ChildFunc>()
const theRightTime = new Promise((resolve) => {
setTimeout(resolve, 1000)
})
useEffect(() => {
theRightTime.then(() => {
if (funcRef.current) {
console.log(funcRef.current())
}
})
}, [funcRef, theRightTime])
return <Child ref={funcRef} />
}
顺便提一嘴, react 官网顶部有个"条幅" -- "黑人的命也是命。 支持公正司法倡议。" -- 但是各位可以切换语言看一下, 好像只有简体中文和英文有, 繁体中文、日文等都没有(那么多语言, 我也没一个一个翻, 但是我看了的好几个都没有)