joicomponents
Version:
Design patterns to build native web components
24 lines (21 loc) • 655 B
JavaScript
export const HashChangedMixin = function(Base){
return class HashChangedMixin extends Base {
constructor() {
super();
this.arr =[];
this._listener = ()=> this.getValue();
}
connectedCallback() {
if (super.connectedCallback) super.connectedCallback();
window.addEventListener("hashchange", this._listener);
}
disconnectedCallback() {
if (super.disconnectedCallback) super.disconnectedCallback();
window.removeEventListener("hashchange", this._listener);
}
getValue() {
this.arr.unshift(window.location.hash.slice(1));
this.hashChangedCallback(this.arr[0]);
}
}
};