当前位置: 首页 > 面试题库 >

必须返回有效的React元素(或null)。您可能返回了undefined,数组或其他无效对象

韦寒
2023-03-14
问题内容

我只是ReactJS的新手,所以有一个问题。我解决不了 似乎一切都很好,但是控制台仍然让我:

必须返回有效的React元素(或null)。您可能返回了undefined,数组或其他无效对象。

这是我的代码:

import React from 'react';
import ReactDOM from 'react-dom';
import fetch from 'isomorphic-fetch';
import Pokemon from './Pokemon';

class PokemonList extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      species: [],
      fetched: false,
      loading: false,
    };
  }
  componentWillMount(){
    this.setState({
      loading : true
    });
    fetch('http://pokeapi.co/api/v2/pokemon?limit=151').then(res => res.json())
    .then(res =>{
      this.setState({
        species : res.results,
        loading : true,
        fetched : true
      });
    });
  }
  render() {
    const {fetched, loading, species} = this.state;
    let content;
    //This if seems to be the problem
    if(fetched){
      content =
      <div className="pokemon--species--list">
        {species.map((pokemon,index) => <Pokemon key={pokemon.name} id={index+1} pokemon={pokemon}/>)}
      </div>;
    }
    else if(loading && !fetched){
        content = <p> Loading ...</p>;
    }
    else{
      content = <div/>;
    }
    return (
      <div>
        {content}
      </div>
    );
  }
}

export default PokemonList;

宠物小精灵

import React from 'react';
import ReactDOM from 'react-dom';


class Pokemon extends React.Component {
  render() {
    const {pokemon, id} = this.props;
    return
      <div className="pokemon--spacies">
        <div className="pokemon--spacies--container">
          <div className="pokemon--spacies--sprite">
            <img src={`/public/sprites/${id}.png`} />
          </div>
          <div className="pokemon--spacies--name"> {pokemon.name }</div>
        </div>
      </div>;
  }
}

export default Pokemon;

感谢帮助!


问题答案:

问题是您有多个语句render,因此需要将其括在内部。()请参见以下代码片段。另外,(必须与return其他项目在同一行上,否则它将被视为return仅基本不返回任何内容的行。

class Pokemon extends React.Component {

  render() {

    var content = <div></div>

    return (

      <div className="pokemon--spacies">

        <div className="pokemon--spacies--container">

          <div className="pokemon--spacies--sprite">

            {content}

          </div>

          <div className="pokemon--spacies--name"> Hello</div>

        </div>

      </div>

    )

  }

}

ReactDOM.render(<Pokemon/>, document.getElementById('app'));


<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.js"></script>

<div id="app"></div>


 类似资料:
  • 我有以下简单的代码: 我得到了这个错误: "必须返回有效的React元素(或null)。您可能已返回未定义、数组或其他无效对象。"

  • 我有一个可选对象: 我想返回或如果为空返回。 我们是否有比遵循更复杂的方法来实现这一点?

  • 有可能有一个返回整数或浮点的函数吗?如果可能的话,我想把这两个函数合二为一:

  • 问题内容: 我将这个JSON对象存储在纯文本文件中: 当我尝试用解码时,它返回NULL。为什么?该文件是可读的(我尝试了回显,但工作正常)。 我已经针对http://jsonlint.com/测试了JSON ,它是完全有效的。 怎么了 问题答案: 它可以是特殊字符的编码。您可以要求 json_last_error() 获得确切的信息。 更新:问题已解决,请查看问题中的“解决方案”段落。

  • 问题内容: 我正在从第三方网站(家庭用电)中检索JSON,并且根据我从该站点的要求,返回的JSON可能是数组,也可能不是数组。例如,如果我请求我的智能电表列表,则会得到以下信息(由于尺寸较大,结果被截断了): 其中 gwrcmd 是单个元素。 但是,如果我要求最近半小时用电,则会得到以下信息: 看看 gwrcmd 现在是一个数组吗? 在我的Go应用程序中,我有一个看起来像这样的结构(再次被截断了一

  • 我有以下模式: 模式反映了一个事实,即我必须返回一个对象。然而,我不能总是这样做,有时我需要返回null。例如,如果我向数据库发出请求,它将返回return object或null(如果找不到用户)。 在我的GraphQL模式中,我为特定字段设置了类型。如果我试图返回一个不同于我设置的类型,我会得到一个错误。如何允许字段返回对象或null?