这在 class 中未定义

this is undefined in class

我有以下class

class ContractStore {

    clauses = [];

    addClause() {
        this.clauses.push({
            id: uuidv1()
        })
    }

}

export let contractStore = new ContractStore();

然后将其导入为

import { contractStore } from '../store/ContractStore'
...
contractStore.addClause()

并且我在 addClause() 方法中得到 this 作为 undefined。我在这里做错了什么?

您没有在此处设置上下文。您可以通过两种方式做到这一点。

箭头函数方式

class ContractStore {

    clauses = [];

    addClause = () => {
        this.clauses.push({
            id: uuidv1()
        })
    }

}

或 绑定方式

class ContractStore {
    constructor() {
      this.addClause = this.addClause.bind(this)
    }
    clauses = [];

    addClause() {
        this.clauses.push({
            id: uuidv1()
        })
    }

}

谢谢。欢迎反馈