Polymer v2.0:如何编写可重用的mixin代码

可以说我想写一组mixin。 据我所知,每个mixin应该提供一些功能,并且不影响或依赖任何其他mixin(除非直接扩展另一个mixin)。

所以我写这样的东西:

const MixinA = superClass => class extends superClass {
  connectedCallback() {
    this.addEventListener('click', this.handleClick_);
  }

  /**
   * @return {Array.<string>}
   */
  static get observers() {
    return [
      'handleMyPropChange_(myProp)',
    ];
  }
}

然后我添加这样的东西:

const MixinB = superClass => class extends superClass {
  /**
   * @return {Array.<string>}
   */
  static get observers() {
    return [
      'handleMyPropChange_(myProp)',
    ];
  }
}

如果我将这两个mixin应用于相同的元素,则handleMyPropChange_一个将被隐藏,而第二个将被触发两次。

在这个例子中,可以使用和handleClick_相同的问题。

Polymer v1行为没有这样的问题。

我找到的唯一方法是为每个私人类成员添加一些mixin特定的前缀,以赋予它们独特的名称,但它看起来不是很方便什么是处理此问题的最佳选择?


在Polymer 2中,你正在扩展一门课。 这意味着只有任何给定名称只能有一个函数。 你基本上覆盖了以前定义的最新功能。 该函数发射两次,因为每个mixin正在注册一个观察者,这些都没有重复。

如果功能在逻辑上相同,我会将其抽象出来。 如果它们在逻辑上不同,我会根据函数的作用提供不同的更清晰的名称。

链接地址: http://www.djcxy.com/p/5339.html

上一篇: Polymer v2.0: how to write reusable mixin code

下一篇: Polymer 2 with external login