未捕获的引用错误:初始化之前无法访问“allNewDice”....reactjs useState

问题描述 投票:0回答:2

嗨朋友们:::: 需要帮助::: 我正在尝试编写代码,但我收到一条消息::::: 未捕获的引用错误:初始化之前无法访问“allNewDice”...任何人都可以帮助我解决这个问题...请

import "./Main.css";
import Dices from "../Dices/Dices";
import React from "react";
const Main = () => {
  const [dice, setDice] = React.useState(allNewDice());

  const allNewDice = () => {
    const newDice = [];
    for (let index = 0; index < 10; index++) {
      const randomNumber = Math.ceil(Math.random() * 6);
      newDice.push(randomNumber);
    }
    return newDice;
  };

  const rollDice = () => {
     setDice(allNewDice());
  }
  const diceElement = dice.map((die) => {
    <Dices value={die} />;
  });


  return (
    <main>
      <div className="dice-container">{diceElement}</div>
      <button onClick={rollDice}>Roll</button>
    </main>
  );
};

export default Main;

.....................

import "./Dices.css";

const Dices = (props) => {
  return <div className="dice"> {props.value} </div>;
};

export default Dices;

javascript reactjs react-hooks uncaught-reference-error
2个回答
0
投票

错误告诉您:初始化之前无法访问'allNewDice'。 在调用之前,您需要初始化并声明 allNewDice 函数。

// * Initializing allNewDice
const allNewDice = () => {
  const newDice = [];
  for (let index = 0; index < 10; index++) {
    const randomNumber = Math.ceil(Math.random() * 6);
    newDice.push(randomNumber);
  }
  return newDice;
};  

// * Calling allNewDice()
const [dice, setDice] = React.useState(allNewDice());


0
投票

allNewDice 函数是在骰子状态的初始值中调用后定义的。

要修复此错误,您可以调用作为状态初始值传递的表达式内的函数:

const [dice, setDice] = React.useState((() => allNewDice())());

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.