React.createElement:type不应为null

时间:2016-10-21 11:39:29

标签: javascript reactjs components redux

首先,我希望这不是重复 - 我正在使用ES6,而不是常规extends React.Component

这是我的Layout组件。我正在将此app.js实现为import Layout from './components/Layout';,而控制台正在抛出错误:

React.createElement: type should not be null, undefined, boolean, or number. It should be a string (for DOM elements) or a ReactClass (for composite components). Check the render method of "Layout".

const Layout = (props) => {

    let { location } = props;

    return (
        <div>
            <Nav location={location} />
            <main>
            </main>
        </div>
    );
};

export default Layout;

有什么问题?这是React / Redux env。

2 个答案:

答案 0 :(得分:0)

docs所示,您的export声明可能错误:

  

请注意,不能将var,let或const用于导出默认值。

尝试更改

export default Layout;

export { Layout as default };

答案 1 :(得分:0)

错误说Check the render method of "Layout".

这是一个很好的暗示,错误不是来自app.js,而是来自Layout组件。可能是你导入Nav的方式。如果您的import语句如下所示:

import Nav from "/path/to/Nav";

尝试将其更改为:

import { Nav } from "/path/to/Nav";

进一步说明:使用default导出可让您在导入时省略花括号。

// if Nav component export looks like this:
export default Nav;
// OR
export { Nav as default };
// import it as such:
import Nav from "/path/to/Nav";

// if Nav component export looks like this:
module.exports = { Nav };
// import it as such:
import { Nav } from "/path/to/Nav";

如果使用错误的导入方法,则会出现错误React.createElement: type should not be null[...](取决于模块是否导出default)。