【问题标题】:React.createElement: type is invalid - expected a string (for built-in components) or a class/function (for composite components) but got: undefinedReact.createElement:类型无效 - 需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:未定义
【发布时间】:2017-07-25 12:53:37
【问题描述】:

我有一个简单的路由程序,给出了标题中提到的错误。下面是我的代码。

App.js

import React from 'react';

class App extends React.Component {
    render() {
        return (
            <div>
                <h2>hello</h2>
                {this.props.children}
            </div>
        );
    }
}

export default App;

home.js

import React from 'react';

export default class Home extends React.Component {
    render() {
        return (
            <h1>Hello World!</h1>
        )
    }
}

main.js

import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router, Route, IndexRoute } from 'react-router-dom';

import Home from './components/home';
import App from './app';

ReactDOM.render(
    <Router>
        <Route path="/" component={App}>
            <IndexRoute component={Home} />
        </Route>
    </Router>,
    document.getElementById('app')
);

它正在打印你好(来自 app.js)

【问题讨论】:

  • 您是否有其他错误信息。 udefined是什么组件?
  • 它的子组件是未定义的。基本上我觉得它的说法 home.js 是未定义的。
  • IndexRoute 不是 react-router v4 中的组件。

标签: javascript reactjs react-native react-router


【解决方案1】:

尝试将其添加到您的主文件中

import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router, Route, IndexRoute } from 'react-router-dom';

import Home from './components/home';
import App from './app';

ReactDOM.render(
    <Router>
        <div>
          <App />
          <Route exact path="/" component={Home} />
        </div>
    </Router>,
    document.getElementById('app')
);

【讨论】:

  • 谢谢。它的工作。但是,如果链接变大,您能否评论一下这将如何进行。像这样说 /home/page/something/:someid 。
【解决方案2】:

您的App 组件没有子组件,因此无需尝试渲染它们。它基本上让你尝试渲染undefined。所以基本上只需删除该行:

class App extends React.Component {
    render() {
        return (
            <div>
                <h2>hello</h2>
            </div>
        );
    }
}

【讨论】:

    猜你喜欢
    • 2020-09-04
    • 2022-01-12
    • 2017-08-30
    • 1970-01-01
    • 2017-11-29
    • 2020-03-07
    • 2021-06-30
    • 2020-12-17
    • 2021-05-07
    相关资源
    最近更新 更多