这是在课堂上未定义

时间:2018-10-26 13:38:05

标签: ecmascript-6 import this undefined

我有以下课程

class ContractStore {

    clauses = [];

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

}

export let contractStore = new ContractStore();

然后将其导入为

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

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

1 个答案:

答案 0 :(得分:0)

您缺少在此处设置上下文的信息。您可以通过两种方式来实现。

箭头功能方式

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()
        })
    }

}

谢谢。欢迎反馈