- From: Rob Wormald <notifications@github.com>
- Date: Tue, 25 Jun 2019 15:51:29 -0700
- To: w3c/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Tuesday, 25 June 2019 22:51:52 UTC
Currently implementing something very similar to `React.lazy` with Angular's Custom Element API, and I definitely see the value in something along these lines.
A simple primitive that might make this a whole lot easier would be adding the ability to lazily define `observedAttributes` - most everything else can be done in userspace, but they have to be registered up front:
```js
//what i want
const LazyEl = (resolveFn) => class LazyElement extends HTMLElement {
constructor(){
super();
resolveFn().then(impl => {
impl.default.attrs.forEach((attr) => this.constructor.observeAttribute(attr)); //this doesn't exist :(
})
}
}
customElements.define('my-lazy-element', LazyEl(() => import('./my-comp-impl')));
```
```js
//what i have to do
const LazyEl = (resolveFn, attrs) => class LazyElement extends HTMLElement {
static get observedAttributes(){ return attrs }
constructor(){
super();
resolveFn().then(impl => { ... })
}
}
customElements.define('my-lazy-element', LazyEl(() => import('./my-comp-impl'), ['foo', 'bar]));
```
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/webcomponents/issues/782#issuecomment-505651451
Received on Tuesday, 25 June 2019 22:51:52 UTC