【问题标题】:React.js: Element type is invalid:React.js:元素类型无效:
【发布时间】:2019-09-05 13:10:07
【问题描述】:

我正在 VS 2019 中创建示例 react.js 项目

我的 Index.js

import 'bootstrap/dist/css/bootstrap.css';
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { ConnectedRouter } from 'react-router-redux';
import { createBrowserHistory } from 'history';
import configureStore from './store/configureStore';
import App from './App';
import registerServiceWorker from './registerServiceWorker';

// Create browser history to use in the Redux store
const baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');
const history = createBrowserHistory({ basename: baseUrl });

// Get the application-wide store instance, prepopulating with state from the server where available.
const initialState = window.initialReduxState;
const store = configureStore(history, initialState);

const rootElement = document.getElementById('root');

ReactDOM.render(
  <Provider store={store}>
    <ConnectedRouter history={history}>
      <App />
    </ConnectedRouter>
  </Provider>,
  rootElement);

registerServiceWorker();

我的 App.js

import React, { Component } from 'react'
import NavBar from './components/NavBar'
import CoursesList from './components/CourseList'


export default class App extends React.Component {

    render() {
        return (
            <div>
                <NavBar />
                <CoursesList />
            </div>
        )
    }
}

运行时出现错误:

元素类型无效:应为字符串(用于内置组件) 或类/函数(用于复合组件)但得到:对象。

检查NavBar的渲染方法。

我正在使用 Material UI

NavBar.js

import React from 'react'
import AppBar from '@material-ui/core/AppBar'
import Toolbar from '@material-ui/core/Toolbar'
import Typography from '@material-ui/core/Typography'
const NavBar = () => {
    return (
        <div>
            <AppBar position="static">
                <Toolbar>
                    <Typography variant="title" color="inherit">
                        React & Material-UI Sample Application
                </Typography>
                </Toolbar>
            </AppBar>
        </div>
    )
}
export default NavBar;

包装.json

"name": "React_Material_UI",
"version": "0.1.0",
"private": true,
"dependencies": {
  "bootstrap": "^4.3.1",
  "jquery": "3.3.1",
  "react": "^16.0.0",
  "react-dom": "^16.0.0",
  "react-redux": "^5.0.6",
  "react-router-bootstrap": "^0.24.4",
  "react-router-dom": "^4.2.2",
  "react-router-redux": "^5.0.0-alpha.8",
  "react-scripts": "^1.1.5",
  "reactstrap": "^6.3.0",
  "redux": "^3.7.2",
  "redux-thunk": "^2.2.0",
  "rimraf": "^2.6.2",
},
"devDependencies": {
  "ajv": "^6.0.0",
  "babel-eslint": "^7.2.3",
  "cross-env": "^5.2.0",
  "eslint": "^4.1.1",
  "eslint-config-react-app": "^2.1.0",
  "eslint-plugin-flowtype": "^2.50.3",
  "eslint-plugin-import": "^2.14.0",
  "eslint-plugin-jsx-a11y": "^5.1.1",
  "eslint-plugin-react": "^7.11.1"
},
"eslintConfig": {
  "extends": "react-app"
},
"scripts": {
  "start": "rimraf ./build && react-scripts start",
  "build": "react-scripts build",
  "test": "cross-env CI=true react-scripts test --env=jsdom",
  "eject": "react-scripts eject",
  "lint": "eslint ./src/"
}

有什么线索吗?

【问题讨论】:

  • 您在问题中写了Navbar.js。确保您的文件是 NavBar.js,因为那是您的代码中要导入的内容。
  • 如果不是太麻烦,可以分享一下你的package.json内容吗?因为你的代码看起来不错。
  • 但是在您的依赖项中,我没有看到对 material-ui 的引用应该是 "dependencies": { "@material-ui/core": "4.4.0",
  • 你能//用npm npm install @material-ui/core //用纱线纱线添加@material-ui/core
  • 你看起来像个初学者,所以这里有一些提示。1)你可以直接使用 Component 而不是 React.Component ,因为你已经导入了它。 2) 尽量避免在 React 中使用 JQuery,因为它会损害 React 的功能。 React 有自己的引导程序,称为 Reactstrap 或 React-Bootstrap 。由于正常的 Bootstrap 3,4 使用 jquery ,因此不建议也使用它

标签: javascript reactjs material-ui


【解决方案1】:

尝试像这样在MyApp.js中导入NavBar

import React, { Component } from 'react'
import { NavBar } from './components/NavBar'
import CoursesList from './components/CourseList'


export default class App extends React.Component {

    render() {
        return (
            <div>
                <NavBar />
                <CoursesList />
            </div>
        )
    }
}

【讨论】:

    猜你喜欢
    • 2017-05-16
    • 2019-09-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2018-02-07
    • 2021-05-21
    • 2021-08-05
    相关资源
    最近更新 更多