【问题标题】:Error Using withTracker (React.createElement: type is invalid)使用 withTracker 时出错(React.createElement:类型无效)
【发布时间】:2017-12-02 02:34:48
【问题描述】:

我有一个组件(Board)调用另一个组件:(BoardCardContainer)。

这是错误信息:

React.createElement: type is invalid -- 需要一个字符串(对于 内置组件)或类/函数(用于复合组件) 但得到:未定义。您可能忘记从 定义它的文件。检查Board的渲染方法。

Board.js:

... bunch of imports
import { BoardCardContainer } from './BoardCardContainer';

export class Board extends Component {
  constructor(props) {
    super(props);
  }

  renderCards() {
    return this.props.cards.map(card => (
      <div key={card._id} style={{ margin: 5 }}>
        <BoardCardContainer /> //HERE IS THE PROBLEM!!!!
      </div>
    ));
  }    
  render() { ... }
}

./BoardCardContainer.js

... bunch of imports
export default BoardCardContainer = withTracker(() => { ... })(BoardCard);

【问题讨论】:

  • 您确定所有这些代码都与您的问题相关吗?如果不只提供重现错误所绝对需要的内容,那么将为您提供更好更快的答案。
  • 可能是导出/导入不匹配;先检查一下。

标签: reactjs meteor react-router


【解决方案1】:

这是一个非常常见的 ES6 错误。

您的进口:

import { BoardCardContainer } from './BoardCardContainer';

正在通过 name 导入,但您对应的导出:

export default BoardCardContainer = withTracker(() => { ... }

正在导出默认

只需将您的导入更改为:

import BoardCardContainer from './BoardCardContainer';

【讨论】:

  • IMO reactjs 团队应该改进该错误消息。每个人都会在某个时候遇到这个问题,一开始它很模糊。
猜你喜欢
  • 2017-12-22
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 1970-01-01
  • 2019-11-03
  • 2018-07-22
  • 2019-08-19
  • 2021-02-24
相关资源
最近更新 更多