-1

所以,我有一个组件,它必须从 0 循环到输入的值,作为道具给出

  if (props.number !== "" && props.toPow !== "") {
    for (let i; i < props.toPow; i++) {
      return (
        <div>
          <span>
            {props.number} ^ {i} = {Math.pow(props.number, i)}
          </span>
        </div>
      );
    }
  } else {
    return <h3>Fill in all fields</h3>;
  }

但反应说:

错误:组件(...):渲染没有返回任何内容。这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null。

4

2 回答 2

2

试试这个:)。希望它会起作用......我添加了一个空数组,只是将 html 推入其中,然后返回整个数组。

if (props.number !== "" && props.toPow !== "") {
  let arr = []
  for (let i = 0; i < props.toPow; i++) {
    arr.push(
      <div key={i}>
        <span>
          {props.number} ^ {i} = {Math.pow(props.number, i)}
        </span>
      </div>
    )
  }
  return arr
} else {
  return <h3>Fill in all fields</h3>
}
于 2020-05-02T08:42:13.970 回答
2

像这样的东西会起作用

if (props.number !== "" && props.toPow !== "") {
    let powers =  Array.from({length:props.toPow}, (_, i) => (
        <span>
            {props.number} ^ {i} = {Math.pow(props.number, i)}
        </span>
    ));
    return <div>{powers}</div>;
} else {
    return <h3>Fill in all fields</h3>;
}

那会产生

<div>
    <span> .... </span>
    <span> .... </span>
    <span> .... </span>
</div>

如果你需要

<div>
    <span> .... </span>
</div>
<div>
    <span> .... </span>
</div>
<div>
    <span> .... </span>
</div>

然后你可以做

if (props.number !== "" && props.toPow !== "") {
    let powers =  Array.from({length:props.toPow}, (_, i) => (
        </div>
            <span>
                {props.number} ^ {i} = {Math.pow(props.number, i)}
            </span>
        </div>
    ));
    return <>{powers}</>;
} else {
    return <h3>Fill in all fields</h3>;
}
于 2020-05-02T09:38:07.080 回答