Reactjs 变量超出范围

Reactjs 变量超出范围,reactjs,typescript,Reactjs,Typescript,我是个新手,我已经为Jupyter小部件创建了一个HelloWorld应用程序。一切正常,但是,我无法理解为什么变量视图无法在我的clickHandler函数中访问,即使在应用程序渲染时视图可以在componentDidMount函数中访问。是否有方法从clickHandler函数访问全局变量视图 export class ExampleView extends DOMWidgetView { initialize(){ const view = this; interfac

我是个新手,我已经为Jupyter小部件创建了一个HelloWorld应用程序。一切正常,但是,我无法理解为什么变量
视图
无法在我的
clickHandler
函数中访问,即使在应用程序渲染时
视图
可以在
componentDidMount
函数中访问。是否有方法从
clickHandler
函数访问全局变量
视图

export class ExampleView extends DOMWidgetView {
  initialize(){
    const view = this;
    interface AppProps{

    }
    interface AppState{
      value:any
    }
    class Hello extends React.Component<AppProps,AppState> {
      constructor(props:any){
        super(props);
        this.state = {
          value: view.model.get("value")
        }
        this.clickHandler = this.clickHandler.bind(this);
      }

      onChange(model:any){
        this.setState(model.changed);
      }
      componentDidMount(){ 
        view.listenTo(view.model,"change",this.onChange.bind(this));
      }

      render(){
        return <div><h1>Hello {this.state.value}</h1><button onClick={this.clickHandler}>Submit</button></div>
      }
      clickHandler(){
        console.log("clicked")
        // this.state = {value:"set to something else"}
        this.setState(state => ({
          value: "something else"
        }));
        console.log(view) // VM1302:1 Uncaught ReferenceError: view is not defined
      }
    }

    const $app = document.createElement("div");
    const App = React.createElement(Hello);
    ReactDOM.render(App,$app);

    view.el.append($app);
  }
}
导出类ExampleView扩展了DOMWidgetView{
初始化(){
const view=this;
接口AppProps{
}
接口应用状态{
价值:任何
}
类Hello扩展了React.Component{
构造器(道具:任何){
超级(道具);
此.state={
值:view.model.get(“值”)
}
this.clickHandler=this.clickHandler.bind(this);
}
onChange(型号:任意){
此.setState(型号已更改);
}
componentDidMount(){
view.listenTo(view.model,“change”,this.onChange.bind(this));
}
render(){
返回Hello{this.state.value}提交
}
clickHandler(){
console.log(“单击”)
//this.state={value:“设置为其他对象”}
this.setState(state=>({
价值:“其他东西”
}));
console.log(视图)//VM1302:1未捕获引用错误:未定义视图
}
}
const$app=document.createElement(“div”);
const App=React.createElement(Hello);
render(App,$App);
view.el.append($app);
}
}

我从未见过像TypeScript或React中那样嵌套的类。您是否可以取消它并将
视图
作为道具传递到Hello组件?您是否正在使用transpiling组件来传输代码?这可能是一个与透明有关的问题。