reactjs - 无法使用导入文件中的类

标签 reactjs

我正在尝试将一个项目拆分为多个文件,当我尝试导入一个文件时,我收到此警告/错误 warning.js:36Warning: React.createElement: type 不应为 null、undefined、boolean 或 number。它应该是一个字符串(对于 DOM 元素)或一个 ReactClass(对于复合组件)。检查 Menu 的渲染方法。 warning.js:36Warning: React.createElement: type 不应为 null、undefined、boolean 或 number。它应该是一个字符串(对于 DOM 元素)或一个 ReactClass(对于复合组件)。检查 Menu 的渲染方法。 invariant.js:38 未捕获错误:元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:未定义。检查 Menu.(…)

的渲染方法

我试着用谷歌搜索这个问题,我看到了很多这样的帖子,但我无法解决这个问题。 这是 Menu.jsx

import React, { Component } from 'react' 
import { render } from 'react-dom'
import Link from 'react-router'

export default class Menu extends Component {
    render () {
        return (
            <ul>
                <li><Link to="test">Link1</Link></li>
                <li><Link to="test2">Link2</Link></li>
            </ul>
        )
    };
}

这里是 app.jsx

import React from 'react'
import { render } from 'react-dom'
import { Router, Route, Link, browserHistory } from 'react-router'
import Menu from './Menu'

const Home = React.createClass({
  render() {
    return (
      <div>
        <div className="headerNav">
          <Menu />
        </div>
        <h1>Welcome to the Home Page</h1>
        {this.props.children}
      </div>
    );
  }
});

const RestOf = React.createClass({
  render: function() {
    return (<h1>Will it get all the others ?</h1>);
  }
});

render((
  <Router history={browserHistory}> 
    <Route path="/" component={Home} > 
      <Route path="*" component={RestOf} />
    </Route> 
  </Router>
), document.getElementById('root')); 

好吧,我几乎尝试了从搜索中找到的所有内容,但不确定我在这里遗漏了什么......但我真的对这些错误感到困惑。 p.s 我真的是 React 的新手。

我注意到,如果我将 Menu 类放在 app.jsx 中并将其定义为其他类,它会正常工作。

编辑:我正在使用 webpack,所以编译 react 文件。

谢谢!

最佳答案

在我看来,问题出在 Menu.jsx 文件中从 react-router 导入的 Link。应该是这样的:

import { Link } from 'react-router'

export default class Menu extends Component {

请记下{}。 React 路由器导出一个带有 Link 键的对象。

在第二个文件中,您的导入看起来不错:

import { Router, Route, Link, browserHistory } from 'react-router'

这解释了为什么当您将 Menu 类粘贴到那里时它会起作用。

此处的提示是错误信息:

Check the render method of Menu.

因此您可以确定正在加载 Menu 类,并且错误出在您的渲染函数中。 如果找不到菜单文件,您会收到一条消息,指出菜单未定义或类似内容。

关于reactjs - 无法使用导入文件中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41058937/

相关文章:

javascript - 选择多个映射到不同单选组的单选按钮 - React

javascript - 向路由添加 hashrouter 使 'push' 停止渲染组件

javascript - 为什么 useEffect 在状态没有改变的情况下不调用回调函数?

javascript - 使用material ui v1.0 beta 26时下拉组件出错

javascript - 如何使用 ES6 import 或 require 导入简单的 JS 脚本 "globally"?

javascript - 在 React 中更改下拉选项不会应用样式定位选定选项

javascript - 如何确保所有数据按顺序写入 Firestore?

javascript - react Js : Pass props to React Router's Link component Error

javascript - React Native 渲染相同的路线

javascript - 将参数传递给 React 组件