Can modals be treated like promises
The answer is yes. I can't count how many times I've coded a confirmation modal. Every time I've been unhappy by the extra state management required to handle the open and close actions. There must be a better way. Promises are a natural resource for control flow. Since a modal is almost always dictated by a user action, promises are a nice pattern.
Here is the tl;dr
// get some context for the modal const thingContext = {count: 109} const userAction = new Promise((resolve, reject) => { // show the modal setDialog({resolve, reject, context: thingContext}) }) try { await userAction; } catch { // negative action flow setLoading(false); setDialog(false); return false; } // positive action flow

Top comments (0)