2017-12-05 19 views
1

믹스 인 세트를 쓰고 싶습니다. 내가 알기에, 각각의 믹스 인은 어떤 기능을 제공해야하고 다른 믹스 인에 영향을 미치지 않거나 의존하지 않아야한다 (다른 믹스 인을 직접 확장 할 때 제외).폴리머 v2.0 : 재사용 가능한 믹스 인 코드 작성 방법

그래서 내가 이런 식으로 뭔가를 쓰기 :

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 특정 접두사를 추가하여 고유 한 이름을 부여하는 것이지만 매우 유용하지는 않습니다.이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

+0

그가보고있는 JSFiddle : https://jsfiddle.net/stramel/Lmtm9f49/ –

답변

1

폴리머 2에서 클래스를 확장하려고합니다. 즉, 주어진 이름의 함수는 하나만있을 수 있습니다. 기본적으로 이전에 정의 된 함수를 최신으로 재정의하고 있습니다. 이 기능은 각 mixin이 옵저버를 등록하고 있기 때문에 두 번 실행됩니다. 이들은 중복 제거되지 않습니다.

함수가 논리적으로 같은 경우이를 추상화합니다. 논리적으로 다른 경우 함수가 수행하는 작업에 따라 다른 명확한 이름을 제공합니다.