ReactNative Code wird "verschluckt"?

Tach zusammen.
Ich arbeite derzeit an einer App mit ReactNative für Android. Ich nutze also Android Studio und die Emulatoren davon bzw. nur das Pixel 3 und Pixel 8 mit SDK 34.

Folgender Code soll ein zufälliges Wort aus dem Array auslesen. Wenn der Input korrekt ist, dieses Wort aus dem Array löschen und ein neues Wort wählen.

Manchmal (nicht immer) wird aber das selbe Wort nochmal gewählt. Das ist auch so, wenn ich mit einer if-Schleife verhindere, dass das selbe Wort doppelt dran kommen kann.

Ich habe an jeder erdenklichen Position timeouts und if schleifen verbaut (es sind nicht alle immer noch vorhanden) aber nichts ändert etwas. Liegt das am Emulator? Ich habe derzeit wegen Zeitproblemen keine Möglichkeit, das ganze an einem echten Gerät zu testen, darum die Frage.

const checkWord = () => {
        if (input === solution) {
            setIsVisible(false);
            setCurrentWord((prevWord) => Number(prevWord) + 1);

            // Entferne das Wortpaar aus WordsArray
            const updatedWordsArray = WordsArray.filter(pair => pair.wortpaar !== wortpaar);
            setWordsArray(updatedWordsArray); // Update the WordsArray state

            // Überprüfen, ob noch Wörter vorhanden sind
            if (updatedWordsArray.length === 0) {
                finish();
                setStopCours(true);
                setIsRunning(false);
            } else {
                setTimeout(() => {
                    getRandomWord(); // Hier getRandomWord aufrufen
                    setInput('');
                }, 250);
            }
        } else {
            toggleVisibility();
        }
};

const getRandomWord = () => {
    if (stopCours === false) {
        if (!isRunning) return;

        console.log('getRandomWord called');
        if (WordsArray && WordsArray.length > 0) {
            const pairs = WordsArray.reduce((acc, { value, wortpaar, typ }) => {
                if (!acc[wortpaar]) {
                    acc[wortpaar] = { original: null, learn: null, wortpaar: wortpaar };
                }
                if (typ === "originalText") {
                    acc[wortpaar].original = value;
                } else if (typ === "learnText") {
                    acc[wortpaar].learn = value;
                }
                return acc;
            }, {});

            const pairNumbers = Object.keys(pairs);
            const filteredPairNumbers = pairNumbers.filter(pairNumber => WordsArray.some(pair => pair.wortpaar === pairNumber));

            if (filteredPairNumbers.length === 0) {
                finish();
                setIsRunning(false);
                setStopCours(true);
                return;
            }

            // Zufälliges Paar auswählen
            const randomPairNumber = filteredPairNumbers[Math.floor(Math.random() * filteredPairNumbers.length)];
            const selectedPair = pairs[randomPairNumber];

            // Setze die Werte für das neue Wortpaar
            setSolution(selectedPair.learn);
            setWord(selectedPair.original);
            setWortpaar(selectedPair.wortpaar);
            setSeeSolution('Lösung anzeigen');
        }
    }
};
 
JavaScript, Array, Programmiersprache, React Native

Meistgelesene Beiträge zum Thema JavaScript