不同文件中的继承 class 父“this”导致未定义
Inheritance class in different files parent “this” result to undefined
我是 javascript/react 的新手,我尝试继承 class。
问题是,当我创建一个新的“子项”并从父项调用一个函数时,“this”结果为未定义...
这是我的文件:
第一个文件:
import React, { Component } from 'react';
import ChildChecker from './ChildChecker';
class ExampleForm extends Component {
render() {
let Checker = new ChildChecker();
return (
<label>
Name :
<input type="text" onBlur={Checker.handleNameBlur} />
</label>
)
}
}
export default ExampleForm;
儿童检查器:
import ParentChecker from './ParentChecker';
export default class ChildChecker extends ParentChecker {
}
家长检查器:
export default class ParentChecker {
constructor() {
this.data = {
'foo': 'bar',
};
}
handleNameBlur(e) {
console.log(this.data); // <=== "this" result to undefined.
/* ... */
}
}
谢谢
handleNameBlur
在另一个上下文中使用(ClassExampleForm
)所以你应该在ParentChecker中绑定它以保持上下文。
export default class ParentChecker {
constructor() {
this.data = {
'foo': 'bar',
};
this.handleNameBlur = this.handleNameBlur.bind(this);
}
handleNameBlur(e) {
console.log(this.data); // <=== "this" result to undefined.
/* ... */
}
}
我是 javascript/react 的新手,我尝试继承 class。
问题是,当我创建一个新的“子项”并从父项调用一个函数时,“this”结果为未定义...
这是我的文件:
第一个文件:
import React, { Component } from 'react';
import ChildChecker from './ChildChecker';
class ExampleForm extends Component {
render() {
let Checker = new ChildChecker();
return (
<label>
Name :
<input type="text" onBlur={Checker.handleNameBlur} />
</label>
)
}
}
export default ExampleForm;
儿童检查器:
import ParentChecker from './ParentChecker';
export default class ChildChecker extends ParentChecker {
}
家长检查器:
export default class ParentChecker {
constructor() {
this.data = {
'foo': 'bar',
};
}
handleNameBlur(e) {
console.log(this.data); // <=== "this" result to undefined.
/* ... */
}
}
谢谢
handleNameBlur
在另一个上下文中使用(ClassExampleForm
)所以你应该在ParentChecker中绑定它以保持上下文。
export default class ParentChecker {
constructor() {
this.data = {
'foo': 'bar',
};
this.handleNameBlur = this.handleNameBlur.bind(this);
}
handleNameBlur(e) {
console.log(this.data); // <=== "this" result to undefined.
/* ... */
}
}