参数无法访问-[ts]找不到名称“产品”

时间:2019-01-21 18:37:30

标签: javascript reactjs typescript

我正在尝试将参数[<tf.Operation 'pi' type=Const>, <tf.Operation 'r' type=Placeholder>, <tf.Operation 'mul' type=Mul>, <tf.Operation 'mul_1' type=Mul>] 添加到按钮组件

我的函数product的{​​{1}}设置如下:

handleIncrement

我的onClick事件:product

据我所知,应该可以在我的handleIncrement = product => { console.log(product); this.setState({ count: this.state.count + 1 }); }; 中使用它,但打字稿给了我“找不到名称“产品””

我仍在学习React和Typescript的阶段。 我是在做错什么还是全都弄错了?

这是完整的代码:

onClick={() => this.handleIncrement(product)}

1 个答案:

答案 0 :(得分:1)

在JS中,变量可以在全局范围内,在函数内或在块内定义范围,具体取决于声明方式或声明方式。

var globalVar = 1;

function example() {
  var functionVar = 2;
  
  if (functionVar) {
    let blockVar = 3; // let makes a variable "block-scoped"
  }
}

在任何特定范围内,您都可以访问该范围内定义的变量,也可以访问其上方的所有范围,直至全局范围(全局变量在任何地方都可见)。

var globalVar = 1;

function example() {
  // here we also have access to globalVar, since it's in an upper scope
  var functionVar = 2;
  
  if (functionVar) {
  // here we have access to globalVar and functionVar, since they are both in an upper scope
    let blockVar = 3;
  }
}

在组件的render方法中,您正在使用名为product的变量,但没有在render范围内(或上述范围内)的任何地方定义它:

render() {
  return (
    <div>
      {/* ... */}
      <button
        {/* ... */}
        onClick={() => this.handleIncrement(product)}
        {/*                                 ^^^^^^^ not defined anywhere in this scope */}
      >
      {/* ... */}
    </div>
  );
}

这是一个如何中断的示例:

function render() {
  console.log(product);
}

render();