javascript - 构造函数在异步函数中绑定 this 不起作用?
问题描述
我在构造函数中绑定了我的函数,但它什么也没给我?我做错什么了 ?我想在异步函数中访问我的类函数
class UploadAvatar extends React.Component {
constructor(props) {
super(props);
this.changeAvatar = this.changeAvatar.bind(this);
}
changeAvatar() {
console.log('changeavt')
}
async function uploadImageAsync(uri) {
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function() {
var base64data = reader.result;
// this.changeAvatar(base64data)
console.log(this)
}
}
}
解决方案
- 从您的类方法中删除
function
关键字。 uploadImageAsync
用这个绑定你
class UploadAvatar extends React.Component {
constructor(props) {
super(props);
this.changeAvatar = this.changeAvatar.bind(this);
// bind this
this.uploadImageAsync = this.uploadImageAsync.bind(this);
}
changeAvatar() {
console.log("changeavt");
}
// remove `function` keyword
async uploadImageAsync(uri) {
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function() {
var base64data = reader.result;
// this.changeAvatar(base64data)
console.log(this);
};
}
}
推荐阅读
- typescript - 工作表 API (google apis) 返回错误“'无效授权:找不到帐户'
- python - 如何将 sql 查询转换为 Pandas Dataframe 和 PySpark Dataframe
- css - css网格两侧不寻常的空白
- inventory - Odoo 13:在过去的日期发布库存估价
- entity-framework-core - Azure 数据库在 localhost 上工作,但在与 azure 服务应用程序一起使用时不能
- python - 在 Python 中修改 txt 文件行的最佳方法是什么
- vim - VIM 中的 grep 在 vim 中显示结果之前打开带有结果的终端
- r - 使用 group_by 维护时间序列的顺序
- hadoop - Impala 查询以获取下一个日期
- jtapi - JTAPI - 如何拦截来自 CUCM 的呼叫