쓸일은 없겠지만 독특하게 blocking을 구현한 코드를 봐서 메모해 놓으려 한다
// react 코드
const resolveRef = useRef<(value: unknown) => void>(() => {});
const showOpenModal = () => {
setIsModalOpen(true);
return new Promise((resolve) => {
resolveRef.current = resolve;
});
};
const _handleClickLeftButton = useCallback(() => {
resolveRef.current(false);
handleClose();
}, []);
const _handleClickRightButton = useCallback(() => {
resolveRef.current(true);
handleClose();
}, []);
// 사용 시
const confirmResult = await showOpenModal();
if (confirmResult) {
// confirm인 경우 동작
} else {
// confirm이 아닌 경우 동작
}
이 방식은 confirmResult에 따라 동작하는 방식을 달리하는 코드를 구현했다
내가 구현한다면 onConfirm에 실행할 함수를 전달하도록 할 것 같다