For循环不返回任何内容React JS

时间:2020-05-02 07:45:44

标签: javascript reactjs jsx

因此,我有一个组件,该组件必须从0循环到输入的值(以prop形式给出)

  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>;
  }

但是React说:

错误:Component(...):渲染未返回任何内容。这通常 表示缺少返回语句。或者,什么也不渲染,返回 空。

2 个答案:

答案 0 :(得分: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>
}

答案 1 :(得分: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>;
}