两点前提:
我唯一想到的方法是使用 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 官网顶部有个"条幅" -- "黑人的命也是命。 支持公正司法倡议。" -- 但是各位可以切换语言看一下, 好像只有简体中文和英文有, 繁体中文、日文等都没有(那么多语言, 我也没一个一个翻, 但是我看了的好几个都没有)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.