【问题标题】:What does Unexpected token, expected ; mean in ReactJS?Unexpected token, expected 是什么意思?在 ReactJS 中是什么意思?
【发布时间】:2019-12-22 01:58:11
【问题描述】:

需要协助处理移动设备和桌面的导航菜单,但收到错误消息。当您收到这样的错误消息时,这意味着什么?再次遇到如何解决

第 20:21 行:解析错误:意外的令牌,应为“;”

      this.hide = this.hide.bind(this);
  19 | 
  20 |         toggleShow(){
     |                     ^
  21 |             this.setState({show: !this.state.show});
  22 |         }

完整代码:

class Navigation extends React.Component {

    constructor(props) {
        super(props);

        this.state = {
            show: false
        }

        this.toggleShow = this.toggleShow.bind(this);
        this.hide = this.hide.bind(this);

        toggleShow(){
            this.setState({show: !this.state.show});
        }

        hide(e){
            if(e && e.relatedTarget){
              e.relatedTarget.click();
            }
        this.setState({show: false});
    }

完整代码

render() {
      return (
          <Router>
              <div className="FlexContainer NavbarContainer">

                  <div className="mobilecontainer LeftNav">
                      <h2 className="BrandName LeftNav mobileboxmenu inline">Kommonplaces</h2>
                      <div 
                      className="hamburger inlinev"  
                      onClick={this.toggleShow}  
                      onBlur={this.hide}>
                          <img alt="menubtn" src={hamburger}></img>
                      </div>
                  </div>

                  {
                        this.state.show &&
                    ( 
                        <ul className="NavBar">
                            <Dropdown/>    
                            <li className="RightNav"><Link to="/">Host Your Space</Link></li>
                            <li className="RightNav"><Link to="/">About Us</Link></li>
                            <li className="RightNav"><Link to0="/">Contact Us</Link></li>
                            <li className="RightNav"><Link to="/">Sign Up</Link></li>
                            <li className="RightNav"><Link to="/">Login</Link></li>
                        </ul>
                    )
                  }
               </div>
         </Router>
      );
    }
  }

  export default Navigation;

【问题讨论】:

  • 您只能在类的主体内而不是在其构造函数内定义类似 (toggleShow(){..}) 的函数。
  • @Titus 你什么意思?你的意思是像 ClassName 一样吗?

标签: javascript reactjs


【解决方案1】:

这是一个 javascript 语法错误。令牌是一个字符。与 React 无关。

你可以查看这些关于 Js 类的链接: - https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/es6/use-class-syntax-to-define-a-constructor-function

您的代码应该是这样的,以免产生错误:

class Navigation extends React.Component {

    constructor(props) {
        super(props);

        this.state = {
            show: false
        }
    }
    toggleShow() {
        this.toggleShow = this.toggleShow.bind(this)
        this.hide = this.hide.bind(this)
        this.setState({ show: !this.state.show });
    }

    hide(e) {
        if (e && e.relatedTarget) {
            e.relatedTarget.click();
        }
        this.setState({ show: false });
    }
}

【讨论】:

    【解决方案2】:

    问题在于您使用的是在构造函数中定义类函数的语法。要解决此问题,请使用:

    class Navigation extends React.Component {
    
        constructor(props) {
            super(props);
    
            this.state = {
                show: false
            }
    
            this.toggleShow = this.toggleShow.bind(this);
            this.hide = this.hide.bind(this);
        }
    
        toggleShow(){
            this.setState({show: !this.state.show});
        }
    
        hide(e){
            if(e && e.relatedTarget){
                e.relatedTarget.click();
            }
            this.setState({show: false});
        }
    }
    

    在本例中,constructortoggleShow 的定义之前结束。

    【讨论】:

    • 所以,你说我在没有关闭或调用它的情况下结束了 toggleShow。
    • @bpdg 不,我是说您不能在 constructor 函数中使用该语法定义 toggleShow,您定义它的方式只能在类主体内使用 @987654327 @不在构造函数内class A { constructor(){ toggleShow(){..} } }
    • @bpdg 您可以在此处找到有关该模式的详细信息:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
    • 感谢您向我解释并给我阅读的资源
    猜你喜欢
    • 1970-01-01
    • 2011-08-12
    • 2017-06-11
    • 2018-03-05
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 2010-12-28
    相关资源
    最近更新 更多