代码之家  ›  专栏  ›  技术社区  ›  Kevin

react onclick导致编译错误

  •  0
  • Kevin  · 技术社区  · 7 年前

    我有一段代码如下:

    for (let i = 0; i <= total; i++)
      leftButtons.push(<Button onClick={() => console.log(i)} key={`leftBtn_${i}`} color="primary">{i + 1}</Button>);
    

    这将导致编译错误和错误消息“module parse failed:unexpected token(36:23)”。 您可能需要适当的加载程序来处理此文件类型。“

    如果删除console.log(i)或将其更改为不在onclick中使用i,它将通过编译。我真的很困惑为什么我不能在onclick中使用我。

    3 回复  |  直到 7 年前
        1
  •  0
  •   Kevin    7 年前

    知道了。let关键字只允许我居住在for块中的变量。但是,onclick函数将在for范围之外使用,这将导致当时不存在变量i。但是,编译错误消息的连线太多。

        2
  •  0
  •   BlackBeard    7 年前

    而不是:

    onClick={() => console.log(i)}    
    

    尝试做:

    onClick={() => console.log(i).bind(this)}   
    

    imho,这是因为您使用的是箭头函数语法,并且 let 被限制在for循环内 bind 该控制台的行为将与它属于您的let变量所在的全局/外部范围相同。 i 存在。

        3
  •  0
  •   Ruhul Amin    7 年前

    我注意到你用过 leftButtons 变量来按下按钮,这是错误的方法。你已经有了 total 你想打印每一张唱片的按钮。

    你可以很容易地在 jsx

    {
     for (let i = 0; i <= total; i++){
      <Button onClick={() => console.log(i)} key={`leftBtn_${i}`} color="primary">{i + 1}</Button>;
     }
    }