为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梵蒂冈之花 2021-07-06 17:08:15
我有三个类:用户、帐户和模型。用户和帐户正在扩展模型类。用户.js:import Model from '@/classes/Model'export default class User extends Model {  constructor(data) {    super(data)  }}帐户.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)  }}我想从模型中的静态方法 create 创建 Account 和 User 实例,如下所示:Account.create()但是,由于循环依赖问题,我在编译时收到此错误:“超级表达式必须为空或函数”。我不知道如何解决这个问题,而不必像这样将类作为参数传递给 Model.create 方法,我觉得这很丑陋Account.create(data, Account)
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

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


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


// Model.js:

export default class Model {

  constructor(data) {

    …

  }


  static create(models) {

    return new this(models)

  }

}

这通过简单地删除依赖来解决您的循环依赖问题:-)


查看完整回答
反对 回复 2021-07-08
?
www说

TA贡献1775条经验 获得超8个赞

我认为解决此问题的最佳方法是将您classesMapping的文件移动到外部文件。

所以你得到

  • 模型.js

    • 用户.js

    • 账户.js

  • 类映射.js

    • 其中进口UserAccount与被Model.js进口


查看完整回答
反对 回复 2021-07-08
  • 2 回答
  • 0 关注
  • 237 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信