Javascript Can’;t在未安装的组件上执行React状态更新。要修复此问题,请取消useEffect清理函数中的所有订阅和异步任务

Javascript Can’;t在未安装的组件上执行React状态更新。要修复此问题,请取消useEffect清理函数中的所有订阅和异步任务,javascript,reactjs,react-native,use-effect,asyncstorage,Javascript,Reactjs,React Native,Use Effect,Asyncstorage,这是我的第一个问题!我试图用类似的问题来解决我的问题,但我无法将其应用到我的代码中(我承认我根本不理解这个问题的含义),所以 我正在制作一个小的RN项目,一个游戏,效果非常好。我可以在0级开始比赛。游戏有两个提示按钮,一个调用函数并显示答案的第一个字母,另一个显示完整的答案,然后更新一个状态,其中是levelNumber,因此它会用新问题、新答案等进行更新 虽然这是一个冗长的代码,但很酷,然后我添加了使用asynstorage的函数“readStoredLevel”。 它开始工作得很好,所以我的

这是我的第一个问题!我试图用类似的问题来解决我的问题,但我无法将其应用到我的代码中(我承认我根本不理解这个问题的含义),所以

我正在制作一个小的RN项目,一个游戏,效果非常好。我可以在0级开始比赛。游戏有两个提示按钮,一个调用函数并显示答案的第一个字母,另一个显示完整的答案,然后更新一个状态,其中是levelNumber,因此它会用新问题、新答案等进行更新

虽然这是一个冗长的代码,但很酷,然后我添加了使用asynstorage的函数“readStoredLevel”。 它开始工作得很好,所以我的游戏从0级开始,1秒后变为1级(因为它是readStoredLevel函数的默认值)。 因此可见元素更新良好。然后,当我按下调用showFirstLetter函数的按钮时,它工作正常,但当我按下调用showAnswer函数的按钮时,它会出错。请注意,这两个函数使用相同的变量actualGame.Answer[firstletter]来表示有效,而actualGame.Answer则表示它破坏了应用程序(这对我来说有点奇怪)

在我的模拟器中,我得到错误:Typeerror:Undefined它不是一个对象(评估actualGame.Answer) 在我的控制台中出现错误:“无法对未安装的组件执行React状态更新。若要修复此问题,请取消useEffect清理函数中的所有订阅和异步任务”

我不知道怎么解决它。我试图将actualLevel状态放入异步函数或.then()中。但它不起作用。我试着使用我找到的useEffect()的例子,但我完全不了解发生了什么以及如何使用useEffect()

下面是我的代码(我来自阿根廷,我转换了变量名,所以我希望你能理解它,否则,对不起我的英语LoL

import React, {useState,useEffect } from 'react';    
import AsyncStorage from '@react-native-community/async-storage';    
import trivia from '../data/trivia.json'

const gameScreen = props => {
  const [actualLevel, setactualLevel] = useState(0); 
  const readStoredLevel = async () => {
   
    try {    

      storedLevel = await AsyncStorage.getItem('storedLevel') || '1';
    } catch (error) {
      // Error retrieving data
      console.log(error.message);
    }  return storedLevel;
  }
  readStoredLevel().then(()=>{setactualLevel(storedLevel)})
  
   
  const gameNumber = props.navigation.getParam('id');
  const gameName = props.navigation.getParam('gameName');
  const gameQuestion = props.navigation.getParam('gameQuestion');
    var selectedGame=[];
    
    if (gameName === "trivia") {
    selectedGame=trivia;
    }

  const actualGame=selectedGame[actualLevel];

const showFirstLetter=()=>{
   Alert.alert ("La letra nº"+(firstletter+1)+" es :",
  actualGame.Answer[firstletter],
   [
    {
      text: 'Gracias',
      
    }],);
  
   const seeAnswer= ()=> {
    Alert.alert ("La Answer es:", actualGame.Answer, [
      {
        text: 'Gracias',
        onPress: toNextLevel()
      }],);
  } 
  

 
 return (
);

export default gameScreen;