Code Monkey home page Code Monkey logo

Comments (4)

CharlesMangwa avatar CharlesMangwa commented on June 25, 2024 1

hey @willadamskeane! thanks for the snack! i didn't know this was your (or one of your) use case! what i could suggest, if you want to close a modal and open another one right away (or vice versa), is to use modalfy's calback api instead:

onPress={() => {
-  modalfy().closeModal("ModalA");
-  modalfy().openModal("ModalB");
+ modalfy().closeModal("ModalA", () => modalfy().openModal("ModalB"));
}}

the reason we need to use a callback is mainly due to 1 thing: animations. by using a callback, modalfy is then able to animate the initial modal out, remove it from the stack and only then animate the new modal in (or vice versa). if we don't order things that way, we end up in the race condition you're facing where modalfy is being asked to animate a modal out, remove it from the internal stack, add another modal to the internal stack, animate that other modal in, and all of that pretty much all at once.

of course we also considered using promises but that api turned out to be quite complex to handle especially since modalfy() (which can be used outside of react) exist.

even though this callback api is mentioned in the docs, i realised it wasn't the easiest thing to find if you don't know already what exactly you're looking for. therefore, i've updated the main docs to that effect. hope all of this helps!

from react-native-modalfy.

CharlesMangwa avatar CharlesMangwa commented on June 25, 2024

hey @willadamskeane! which version are you using? as well, it would be very helpful if you could provide some reproducible steps in a snack for instance. otherwise, that makes tracking that issue quite tedious.

from react-native-modalfy.

willadamskeane avatar willadamskeane commented on June 25, 2024

@CharlesMangwa Still working on getting a reliably reproducing snippet together, but it is definitely happening sporadically to our testers. Is there any reason to expect calling "closeModal(modalName)" wouldn't immediately close that modal? It seems to get caught in some sort of queue, but I can't figure out the conditions that lead to that happening. Feels like a race condition.

Any chance you can think of a way to programmatically "force close" a modal, to circumvent this issue temporarily? Clicking the backdrop always closes the modal, so it seems there is another way to close that doesn't get caught in this queue

from react-native-modalfy.

willadamskeane avatar willadamskeane commented on June 25, 2024

@CharlesMangwa Just to give a little more clarity, the issue is occurring reliably if at least one modal is open, and then that modal is closed while another modal is opened simultaneously. After this, closeModal stops working.

Here is a snack that illustrates the issue: https://snack.expo.dev/@willadamskeane/witty-edamame

from react-native-modalfy.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.