Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 状态已被对象填充,但无法访问_Javascript_Reactjs - Fatal编程技术网

Javascript 状态已被对象填充,但无法访问

Javascript 状态已被对象填充,但无法访问,javascript,reactjs,Javascript,Reactjs,我的“口袋妖怪”状态已经填满了我需要的数据,但是,我不能在屏幕上显示它们,它只提供了一个空白的白色屏幕。我错过了什么 这是我的状态变量 const [pokemonData, setPokemonData] = useState([]); const initialUrl = 'https://pokeapi.co/api/v2/pokemon/'; 整个useEffect用于首先从“fetchData”获取数据,返回所需的URL列表,我必须在“loadingPokemon”中再次获取这些UR

我的“口袋妖怪”状态已经填满了我需要的数据,但是,我不能在屏幕上显示它们,它只提供了一个空白的白色屏幕。我错过了什么

这是我的状态变量

const [pokemonData, setPokemonData] = useState([]);
const initialUrl = 'https://pokeapi.co/api/v2/pokemon/';
整个useEffect用于首先从“fetchData”获取数据,返回所需的URL列表,我必须在“loadingPokemon”中再次获取这些URL,然后我设置我的Pokemonda状态。

  useEffect(() => {
   const fetchData = async () => {
   setLoading(true);
   let response = await axios.get(initialUrl);
   setNextUrl(response.next);
   setPrevUrl(response.previous);
    
   await loadingPokemon(response.data.results);
   setLoading(false);
    };
   const loadingPokemon = async (datas) => {
    let pokemonRecords = [];
    let pokemonDatas = [];
    datas.map((data) => {
     pokemonRecords.push(data.url); 
     }); 

    pokemonRecords.forEach(async (record) => {
     let pokemonDatasDatas = await axios.get(record);

    
    pokemonDatas.push(pokemonDatasDatas.data);
    });
  
    setPokemonData(pokemonDatas);
    console.log(pokemonData);
     };

    fetchData();
     }, []);

    console.log(pokemonData);
这也是我的渲染回报

return (
    <div className='App'>
      {pokemonData.map((pokemon, index) => (
       <div className='Card'>
        <div className='Card__img'>
         <img src={pokemon.sprites.front_default} alt='' />
       </div>
       <div className='Card__Name'>{pokemon.name}</div>
       <div className='Card__types'>
         {pokemon.types.map((type) => {
           return <div className='Card__type'>{type.type.name}</div>;
         })}
       </div>
       <div className='Card__info'>
         <div className='Card__data Card__data--weight'>
           <p className='title'> Weight </p>
           <p> {pokemon.weight} </p>
         </div>
         <div className='Card__data Card__data--height'>
           <p className='title'> Height </p>
           <p> {pokemon.height} </p>
         </div>
         <div className='Card__data Card__data--ability'>
           <p className='title'> Abilities </p>
           <p> {pokemon.abilities[0].ability.name} </p>
         </div>
         </div>
         </div>
          ))}
         </div>
         );
返回(
{pokemonda.map((pokemon,index)=>(
{pokemon.name}
{pokemon.types.map((type)=>{
返回{type.type.name};
})}

重量

{pokemon.weight}

高度

{pokemon.height}

能力

{pokemon.abilities[0].ability.name}

))} );

尝试条件渲染。我看到你正在跟踪你的加载状态,所以你可以使用它-如果数据没有加载(口袋妖怪被抓取),那么列出你的口袋妖怪。

尝试条件渲染。我看到你正在跟踪你的加载状态,所以你可以使用它-如果数据没有加载(口袋妖怪被抓取),那么列出你的口袋妖怪。

哦,忘了写我的“加载”状态了。。。我试过了,但没用,还是在同一个屏幕上…`退货?(加载…)((分区…)“``你确定你的样式没有问题吗?在你的开发工具的“元素”选项卡中检查它。必须呈现一些东西。实际上'App'div是完全空的,我的一个好朋友说:问题出在forEach内部,因为即使你写异步,它也充当同步函数,当我在forEach块和loadingPokemon'函数继续运行,不会等待forEach完成其工作。因此,我们尝试了一个for循环,然后等待axios获取,它成功了,我现在将添加答案哦,忘记写入我的“加载”状态…我尝试了,但没有工作,同一屏幕…``返回加载?(加载…((div…)“``你确定你的样式没有问题吗?在你的开发工具的“元素”选项卡中检查它。必须呈现一些东西。实际上'App'div是完全空的,我的一个好朋友说:问题出在forEach内部,因为即使你写异步,它也充当同步函数,当我在forEach块和加载口袋妖怪的功能继续进行,不会等待forEach完成它的工作。所以我们尝试了一个for循环,然后等待axios获取,它成功了,我现在就添加答案