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');
}
}
};