React:组件和数组的条件渲染

Posted

技术标签:

【中文标题】React:组件和数组的条件渲染【英文标题】:React: Conditional Rendering Of Components And Arrays 【发布时间】:2017-12-16 04:59:45 【问题描述】:

在这里,我尝试将数组中的每个项目作为 h1 返回,因此打印到屏幕应如下所示:

1
2
3
4
5

但是我得到了这个错误:

警告:Charts(...):必须返回有效的 React 元素(或 null)。您可能返回了未定义、数组或其他一些无效对象。

我怎样才能做到这一点?

import React from 'react';

function NoCharts(props) 
  return <h1>No charts</h1>;


function Charts(props) 
  const myCharts = props.myCharts;
  if (myCharts.length > 0) 

    myCharts.forEach(function(chart) 
        return <h1>chart</h1>;
    );

  
  return <NoCharts />;



export default class App extends React.Component 

  render() 

      let arr = [1,2,3,4,5];

    return (
      <div>

        <Charts myCharts=arr />

      </div>
    )
  

【问题讨论】:

【参考方案1】:

您必须“返回”一个有效的 React 元素,如错误所示 -

Charts(...):必须返回一个有效的 React 元素(或 null)。您可能返回了未定义、数组或其他一些无效对象。

if (myCharts.length > 0) 

    const charts = myCharts.map(function(chart) 
        return <h1>chart</h1>;
    );
    return <div>charts</div>

  
  else 
     return <NoCharts />;
  

这是codepen 上的工作应用程序。

【讨论】:

【参考方案2】:

您需要返回 myCharts。目前你只在数组为空时返回一些东西。

    return myCharts.forEach(function(chart) 
      return <h1>chart</h1>;
    );

【讨论】:

以上是关于React:组件和数组的条件渲染的主要内容,如果未能解决你的问题,请参考以下文章

React 条件渲染组件打字稿

React学习:条件渲染

04.React组件基础案例

2017.11.7 ant design - upload 组件的使用, react 条件渲染以及 axios.all() 的使用

在 React 中重新渲染条件渲染组件

[react] 怎样有条件地渲染组件?