错误:元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)React JS

Posted

技术标签:

【中文标题】错误:元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)React JS【英文标题】:Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) React JS 【发布时间】:2020-11-06 19:41:46 【问题描述】:

我正在尝试学习反应,但我不理解这个错误。如果我返回一个字符串,那很好,但如果我返回,它会一直给我这个错误。

| | | | 错误:元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。

MapsContainer.js

import GoogleMapReact, withGoogleMap, GoogleMap, Map from 'google-map-react';
import React, Component from 'react';

class MapsContainer extends Component 

    static defaultProps = 
        center: lat: 23.2341, lng:5.12342,
        zoom: 8
    

    render() 
      
        
    return(

        <div>
            <GoogleMapReact
                bootstrapURLKeys=key: 'kjk'
                defaultCenter=this.props.center
                defaultZoom=this.props.zoom
            > </GoogleMapReact>


        /* <GoogleMapReact
          bootstrapURLKeys=
            key: 'YOUR_API_KEY',
            libraries: ['places', 'directions']
          
          defaultZoom=11
          defaultCenter= lat: 12.2341, lng: 23.31234 
          yesIWantToUseGoogleMapApiInternals=true
          onGoogleApiLoaded=( map, maps ) => this.apiHasLoaded(map, maps) // "maps" is the mapApi. Bad naming but that's their library.
        >
        </GoogleMapReact> */
        

        </div>
    
    

       
 
        
    );
    
 ;

 export default MapsContainer;

... App.js

import React from 'react';
import logo from './beer.svg';
import './App.css';
import MapsContainer from './containers/MapsContainer';

function App() 
  return (
    <div className="App">


      <header className="App-header">
        <img src=logo className="App-logo"  />
      </header>

      
      <MapsContainer/>
      


    </div>
  );

export default App;

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

ReactDOM.render(
    <App />,
  document.getElementById('root')
);

【问题讨论】:

详细说明错误日志。错误不清楚。提示:切勿公开发布您的 API_KEYS(最好将其删除) 你在哪里渲染App?你似乎没有从 App.js 导出任何东西,你是在同一个文件中调用 ReactDOM.render() 吗? 我在编译代码时没有收到任何错误。它只是在网页中给了我那个错误,它在本地提供服务 也许你忘了export default App 不,我只是忘了把它粘贴在这里 【参考方案1】:

我终于明白我做不到

从 'google-map-react' 导入 GoogleMapReact, withGoogleMap, GoogleMap, Map;

它必须是

从“google-map-react”导入 GoogleMapReact;

【讨论】:

以上是关于错误:元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)React JS的主要内容,如果未能解决你的问题,请参考以下文章

StylesProvider injectFirst 错误:元素类型无效:需要一个字符串(对于内置组件)或

元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:未定义的 React

Next Js 错误:元素类型无效:预期为字符串(对于内置组件)或类/函数(对于复合组件)但得到:未定义

React.createElement:类型无效——需要一个字符串(对于内置组件)或一个类/函数

未捕获的错误:元素类型无效:预期为字符串(对于内置组件)或类/函数(对于复合组件)但得到:对象

为啥我会收到“元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件)......”?