为了账号安全,请及时绑定邮箱和手机立即绑定

reactjs给出错误Uncaught TypeError:超级表达式必须为null或函数

reactjs给出错误Uncaught TypeError:超级表达式必须为null或函数

jeck猫 2019-08-26 19:16:14
reactjs给出错误Uncaught TypeError:超级表达式必须为null或函数,而不是未定义我正在使用reactjs。当我运行下面的代码时,浏览器会说:未捕获的TypeError:超级表达式必须为null或函数,而不是未定义任何有关错误的提示都将受到赞赏。首先是用于编译代码的行:browserify -t reactify -t babelify examples/temp.jsx  -o examples/public/app.js和代码:var React = require('react');class HelloMessage extends React.Component {   render() {     return <div>Hello </div>;   }}更新:在这个问题上在地狱火中燃烧了三天后,我发现我没有使用最新版本的反应。全球安装:sudo npm install -g react@0.13.2在本地安装:npm install react@0.13.2确保浏览器也使用正确的版本:<script type="text/javascript" src="react-0.13.2.js"></script>希望这能为他人节省三天的宝贵生命。
查看完整描述

3 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

班级名称

首先,如果您确定要从正确命名的类扩展,例如React.Component,而不是React.component或React.createComponent,则可能需要升级React版本。有关要扩展的类的更多信息,请参阅下面的答案。

升级React

自版本0.13.0起,React仅支持ES6风格的类(请参阅此处有关支持介绍的官方博客文章。

在此之前,使用时:

class HelloMessage extends React.Component

您试图使用ES6关键字(extends)从未使用ES6定义的类中继承子类class。这可能是您遇到super定义等奇怪行为的原因。

所以,是的,TL; DR - 更新到React v0.13.x.

循环依赖

如果您具有循环导入结构,也会发生这种情况。一个模块导入另一个模块,反之亦然。在这种情况下,您只需要重构代码以避免它。更多信息


查看完整回答
反对 回复 2019-08-26
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

这意味着你想要子类,应该是Class,但是undefined。原因可能是:

  • 错字输入Class extends ...,所以你扩展未定义的变量

  • 错字输入import ... from,所以你undefined从模块导入

  • 引用模块不包含值,您想要导入(例如过时模块 - 使用React的情况),因此您导入非现有值(undefined

  • 参考模块export ...语句中的拼写错误,因此它导出未定义的变量

  • 引用模块缺少export语句,所以它只导出undefined


查看完整回答
反对 回复 2019-08-26
?
慕容森

TA贡献1853条经验 获得超18个赞

它也可能是由拼写错误引起的,所以不是Component使用大写C,而是component使用较低的c,例如:


React.component //wrong.

React.Component //correct.

注意: 此错误的来源可能是因为存在React并且我们自动认为接下来的应该是以小写字母开头的react方法或属性,但实际上它是另一个Class(Component)应该以大写字母开头。


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 913 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信