React 0.13.3 给出 Super 表达式必须为 null 或函数,而不是对象

Posted

技术标签:

【中文标题】React 0.13.3 给出 Super 表达式必须为 null 或函数,而不是对象【英文标题】:React 0.13.3 giving Super expression must either be null or a function, not object 【发布时间】:2015-12-30 03:06:09 【问题描述】:

我有这个代码

import React from 'react';
import Component from 'react';
import Bar from './Bar.es6.js';
import Chart from './Chart.es6.js';
import  connect  from 'react-redux';

export default class App extends Component 
    render() 
        return (
            <div class="app">
                <Chart width=this.props.width
                    height=this.props.height>
                <Bar data=this.state.data
                    width=this.props.width
                    height=this.props.height>
                </Bar>
                </Chart>
            </div>
        );
    
;

function select(state) 
    return state;


export default connect(select)(App);

这给了我一个错误

Uncaught TypeError: Super expression must either be null or a function, not object

从这个问题

reactjs giving error Uncaught TypeError: Super expression must either be null or a function, not undefined

它应该在 React v0.13.x 中消失,而我有 0.13.3

发生了什么事?

【问题讨论】:

你应该同时导出类和 connect() 吗? 您只能有一个默认导出。 【参考方案1】:
import Component from 'react';

react 命名空间导入Component。那是一个对象。与import React from 'react';相同,相当于

var Component = require('react');

不是在链接问题中做了什么。

你想要

class App extends React.Component  

【讨论】:

所以我最初这样做是为了避免在 autoGenerateWrapperClass 错误时无法读取未定义的属性“toUpperCase”,因为这个问题***.com/questions/30643604/…,现在又回来了 即使使用第二种解决方案? 是的......虽然我通常必须从 z 语句中取出所有 import x, y 吗? 视情况而定。 import a from 'foo'; 导入 'foo's 默认 导出。 import a, b from 'foo'; 导入其命名导出。 好的,当我做你做的事情时,我得到了那个错误。我不确定为什么,因为错误消息非常无用。当我尝试不使用 并使用命名空间的子组件时,我得到 React.applyMiddleware is undefined

以上是关于React 0.13.3 给出 Super 表达式必须为 null 或函数,而不是对象的主要内容,如果未能解决你的问题,请参考以下文章

Python 3:super() 意外引发 TypeError

为啥react的组件要super

为啥react的组件要super

为啥react的组件要super

React 基本 api 调用问题

[react] super()和super(props)有什么区别?