Reactjs,超级表达式必须为空或函数

IT技术 reactjs
2021-04-08 07:04:10

我用 React 写了这个演示。我使用 Webpack 来构建这个演示。当我开始演示时,我看到这个错误:

错误:

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

 import React, {Compoment} from 'react';
    import ReactDOM from 'react-dom';
    class App extends React.Compoment {
        constructor(props){
            super(props);
            this.handleClick = this.handleClick.bind(this);
        }
        handleClick(){
            if(this.myTextInput !=null) {
                this.myTextInput.focus();
            }
        }
        render (){
            return (
                <div>
                    <input type="text" ref={(ref) => this.myTextInput = ref} />
                    <input type="button"
                        value="'Focus the text input"
                           onClick={this.handleClick}
                    />
                </div>
            );
        }
    }
    ReactDOM.render(<App />, document.getElementById('app'));

我不知道如何解决问题。

2个回答

代码中唯一的警告是由于您没有扩展正确的类,您需要扩展React.Component.

class App extends React.Component {
        constructor(props){
            super(props);
            this.handleClick = this.handleClick.bind(this);
        }
        handleClick(){
            if(this.myTextInput !=null) {
                this.myTextInput.focus();
            }
        }
        render (){
            return (
                <div>
                    <input type="text" ref={(ref) => this.myTextInput = ref} />
                    <input type="button"
                        value="'Focus the text input"
                           onClick={this.handleClick}
                    />
                </div>
            );
        }
    }
    ReactDOM.render(<App />, document.getElementById('app'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react-dom.min.js"></script>
<div id="app"></div>

尝试以下:

        import React, {Component} from 'react';
        import ReactDOM from 'react-dom';
        class App extends React.Compoment {
          constructor(props){
            super(props);
            this.myTextInput = this.myTextInput.bind(this);
            this.handleClick = this.handleClick.bind(this);
          }
          handleClick(){
            if(this.myTextInput !=null) {
              this.myTextInput.focus();
            }
          }
          render (){
            return (
              <div>
                <input type="text" ref={(ref) => this.myTextInput = ref} />
                <input type="button"
                  value="'Focus the text input"
                  onClick={this.handleClick}
                />
              </div>
            );
          }
        }
        ReactDOM.render(<App />, document.getElementById('app'));