React 组件没有被渲染

时间:2021-07-04 14:38:58

标签: javascript html reactjs

我刚刚开始学习反应,我不明白为什么会发生这种情况。我的代码只是创建一个随机数并显示在DOM中,然后说这个数是大数还是小数。

我已将 react-dom、react 和 Babel 添加到我的脚本中。 Here's 我的代码笔。

这是我的 HTML 代码。

<div id="root"></div>
<div id="rand"></div>

这是我的 JavaScript 代码。当我有 <p>{bigOrSmall} Number !</p> 时,rand 组件没有被呈现。当我删除此行时,它起作用并显示随机数 Your Random Number : [anything]

const Head = () => {
  return <h1>Random Number</h1>
}
const RandomNum = () => {
  const rand = Math.floor(Math.random() * 10);
  if (rand >= 5) {
    const bigOrSmall = "Big"
  }
  else {
   const bigOrSmall = "Small" 
  }
  return (
    <>
      <p>Your Number is: {rand}</p>
      <p>{bigOrSmall} Number !</p>
    </>
  );
}

ReactDOM.render(<Head/>, document.getElementById("root"))
ReactDOM.render(<RandomNum/>, document.getElementById("rand"))

2 个答案:

答案 0 :(得分:1)

问题是您的 RandomNum 组件中存在范围错误。您需要在 bigOrSmall 语句之外定义 if。以下将起作用:

const RandomNum = () => {
  let bigOrSmall;
  const rand = Math.floor(Math.random() * 10);
  if (rand >= 5) {
    bigOrSmall = "Big"
  }
  else {
    bigOrSmall = "Small" 
  }
  return (
    <>
      <p>Your Number is: {rand}</p>
      <p>{bigOrSmall} Number !</p>
    </>
  );
}

答案 1 :(得分:1)

const 是块范围的。所以你的变量在花括号之外是不可访问的。

在花括号上方使用 let bigOrSmall; 并在其内部操作它们的值。

当您将变量移到外面时,现在它的作用域是函数组件的花括号,从 Random = () => { 开始到最后一行 } 结束。

相关问题