如何解决这个循环依赖问题?

朱利安

我有三个类:用户,帐户和模型。用户和帐户正在扩展Model类。

User.js:

import Model from '@/classes/Model'
export default class User extends Model {
  constructor(data) {
    super(data)
  }
}

Account.js:

import Model from '@/classes/Model'
export default class Account extends Model {
  constructor(data) {
    super(data)
  }
}

和Model.js:

import Account from '@/classes/Account'
import User from '@/classes/User'

export default class Model {
  static _classesMapping = {
    Account,
    User
  }

  constructor(data) {
    ...
  }

  static create(models) {
    return new Model._classesMapping[this.name](models)
  }
}

我想从在Model中创建的静态方法创建Account和User实例,如下所示:Account.create()

但是,由于循环依赖问题,我在编译时收到此错误:“超级表达式必须为null或函数”。我不知道如何解决这个问题而不必将类作为参数传递给像这样的Model.create方法,我觉得这很丑

Account.create(data, Account)
贝吉

我想创建AccountUser从静态方法实例在创建模型是这样的:Account.create()

好吧,您不需要任何_classesMapping您可以通过来简单地访问构造函数this,而无需通过其名称进行查找。

// Model.js:
export default class Model {
  constructor(data) {
    …
  }

  static create(models) {
    return new this(models)
  }
}

只需删除依赖关系即可解决循环依赖问题:-)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章