开发者问题收集

使用 axios 发出 get 请求时获取空数组

2023-01-09
298

嗨 :) 我正在尝试从我的 api 中获取一个数字数组,该数组返回类似以下内容: [{"numbers":[9,7,56,58,48,18],"gameId":1},{"numbers":[3,8,10,60,35,5],"gameId":2},{"numbers":[39,24,33,26,48,55],

我正在使用 axios,每次我发出请求时都会发生以下情况: [] length: 0 [[Prototype]]: Array(0)

这是我的代码:

const[game,setGame]= React.useState([]);
var[myGameNumbers, setMyGameNumbers]=React.useState([]);

React.useEffect(()=>{
    axios.get("http://localhost:8080/games/game12").then((response)=>{
     setGame(response.data);
    });
  }, []);
  if (!game) return null;

function mappingNumbers(){
    game.map((game) => (
        setMyGameNumbers==game
    ));
    if(!myGameNumbers) return null; else console.log(myGameNumbers);
}

这是触发该功能的按钮:

 <a href="#" className="button" onClick={mappingNumbers()}>
     <p className="bttn-p">GERAR NÚMEROS</p>
 </a>

我正在寻找一种方法来获取我的数组数字,如下所示: [9,7,56,58,48,18] 每次我点击按钮时。如果有人知道如何帮助我将不胜感激 :D

如果我遗漏了任何内容,这是我的完整代码: https://github.com/vitoriaacarvalho/jogando-na-mega-sena/tree/main/front/jogando-na-mega

1个回答

在您的 mappingNumbers 中,您映射了 game ,并对 setMyGameNumbers 函数进行了一些检查 == ,但这不起作用。正确的语法应该是这样的 setMyGameNumbers(game)

您还检查了 myGameNumbers 是否存在,但它始终存在,因为初始值是一个空数组 [] ,这就是 console.log 记录一个空数组的原因。

...

if (!game) return null;

// will log everytime when a state gets updated
// and if the above statement is false
console.log("myGameNumbers", myGameNumbers);

function mappingNumbers() {
  if (game.length < 1) return null;
  setMyGameNumbers(game);
}

使用正确的语法更新了 onClick

<a href="#" className="button" onClick={() => mappingNumbers()}>
  <p className="bttn-p">GERAR NÚMEROS</p>
</a>
RubenSmn
2023-01-09