[英]How can i call/execute function of functional component outside react?
[英]How can i execute a function after changing a react hook?
当我在 class 组件中执行 setState 时,我可以将回调传递给最后一个参数,并在更改 State 后执行回调:
this.setState({}, () => { *execute after changing state* })
我的例子:
const foo = () => {
setOpen(false);
bar(); // this function should be performed after completion setOpen changing, but setOpen is async func
}
问题:如何在通过setOpen更新hook后立即执行bar(),参数为false?
你会这样做:
const [ isOpen, setIsOpen ] = useState( false );
useEffect(() => {
if( !isOpen ) {
bar();
}
}, [ isOpen ]);
一旦检测到对isOpen
的更改,就会触发useEffect
挂钩,因为它列在useEffect
挂钩的依赖项中。
根据我收集到的信息,您正在处理组件关闭时的一些动画,该bar
是用于卸载组件的 function。
从技术上讲,您要寻找的是(如果 animation 需要500ms
才能完成)是这样的:
// Add this line somewhere outside of your component, preferably in a helpers file.
const delay = ms => new Promise(res => setTimeout(res, ms));
const foo = async () => {
setOpen(false);
await delay(500) // Change this value to match the animation time
bar();
}
这应该允许您的 animation 在卸载组件之前运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.