【问题标题】:TypeError: Super expression must either be null or a function, not undefinedTypeError:超级表达式必须为空或函数,而不是未定义
【发布时间】:2017-07-11 09:49:45
【问题描述】:

我对 React 组件和道具有疑问。下面是一个例外。 我做错了什么?

未捕获的类型错误:超级表达式必须为 null 或 函数,不是未定义的

class Component extends React.component {
  constructor(props) {
    super(props);
    this.state = {
      name: ''
    }
    this.handleChange = this.handleChange.bind(this);
  }

  handleChange(event) {
    this.setState({
      name: event.target.value
    }); 
  }

  render() {
    return (
      <div>
        <input type="text" onChange={this.handleChange} />
        <p>{this.state.name}</p>
      </div>
    )
  }
};

ReactDOM.render(
  <Component />,
  document.getElementById('reactContainer')
)

Codepen link

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    问题出在这一行:

    class Component extends React.component {
    

    您在React.component 中使用了小c 而不是使用C

    class Component extends React.Component {
    

    检查工作代码:

    class Component extends React.Component {
      constructor(props) {
        super(props);
        this.state = {
          name: ''
        }
        this.handleChange = this.handleChange.bind(this);
      }
    
      handleChange(event) {
        this.setState({
          name: event.target.value
        }); 
      }
    
      render() {
        return (
          <div>
            <input type="text" onChange={this.handleChange} />
            <p>{this.state.name}</p>
          </div>
        )
      }
    };
    
    ReactDOM.render(
      <Component />,
      document.getElementById('reactContainer')
    )
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
    
    
    <div id='reactContainer'></div>

    【讨论】:

      猜你喜欢
      • 2018-02-19
      • 2018-01-21
      • 1970-01-01
      • 2023-04-10
      • 2016-10-07
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多