【问题标题】:Passing arguments to a class将参数传递给类
【发布时间】:2017-04-02 10:51:01
【问题描述】:

我正在尝试为 Polymer 2.0 组件(基于类的语法)创建一个 mixin,如下所示。有没有办法按照我现在的方式将选项传递给班级?

使用 mixin 定义聚合物元素:

class PodcastListView extends PolymerApolloBehavior(Polymer.Element, myOptions) {
   //some code 
}

mixin 类:

export const PolymerApolloBehavior = (superclass, options) => class extends superclass {
    constructor() {
       console.log(options);
    }
}

【问题讨论】:

    标签: javascript ecmascript-6 polymer es6-class polymer-2.x


    【解决方案1】:

    我可以建议您为 PodcastListView 类使用函数包装器,该类将创建一个具有新行为的新类。它看起来像这样:

    export const PolymerApolloBehavior = (original, options) => {
      let result = Object.assign({}, original)
      const originalConstructor = result.prototype.constructor
      result.prototype.constructor = () => {
        console.log(options) // your behavior
        originalConstructor() // original constructor
      }
      // any changes of class
      return result
    }
    

    现在你可以应用你的新行为了:

    export default PolymerApolloBehavior(PodcastListView, {behaviorOptions})
    

    【讨论】:

      猜你喜欢
      • 2013-01-08
      • 1970-01-01
      • 2022-07-22
      • 1970-01-01
      • 2011-02-15
      • 2015-11-05
      • 1970-01-01
      • 2019-09-27
      相关资源
      最近更新 更多