我有一个拥有handleRecord
方法的视频组件类。在recorder
方法中,有一个名为stopRecording
的对象,它返回一个名为this
的对象方法调用的blob。
无论返回什么,我都希望该值在视频组件中设置状态。但是recorder
指的是回调中的记录器对象,而不是组件本身。在回调中获取组件并使用handleRecord() {
...
} else {
this.state.recordVideo
recorder.stopRecording(function() {
var blob = this.getBlob();
console.log(this) // <= this refers to recorder object not the component
});
}
}
对象的最佳做法是什么?
{{1}}
答案 0 :(得分:1)
您可以设置一个变量来引用该组件,然后在函数中使用它:
const component = this;
recorder.stopRecording(function() {
var blob = this.getBlob();
console.log(component);
});
当引用组件并将其缓存在this
中时,这基本上会捕获component
值,因此当您在回调函数{{1}中使用它时我将引用记录器对象,但this
将引用您的组件。
当然,如果您想使用类似箭头函数的东西, 可以直接引用component
对象,该函数取其封闭的recorder
值范围 - 这是组件:
this