Attrs initialization without `@attr` decorator
- Ngôn ngữ chính
- TypeScript
- Star
- 1.4k
- Fork
- 59
- Merge trung bình
- 22 giờ 12 phút
- Pull request đã merge (30 ngày)
- 5
Mô tả
Hi there 😄
After upgrading from v1.1.4 to v1.3.2, I noticed that my attributes were no longer shadowed by `initializeAttrs()`. I started digging and stumbled upon this piece of logic introduced in #191:
https://github.com/github/catalyst/blob/a8fb3ba59a4ac258d0fe64a50ecd3b6997f5f016/src/attr.ts#L39
It prevents `initializeAttrs()` from doing anything the second time around, thus skipping the manual initialization of attributes. Also, it seems like this change was one of the main things addressed by the above-mentioned PR.
So, what would be the correct way now to initialize the attributes without the `@attr` decorator?
Thanks!
---
**Example**
```html
class InfoMessage extends HTMLElement {
open = true
connectedCallback() {
initializeAttrs(this, ['open'])
}
}
controller(InfoMessage)
```
1. `controller(InfoMessage)` wraps original `connectedCallback()` and calls:
https://github.com/github/catalyst/blob/a8fb3ba59a4ac258d0fe64a50ecd3b6997f5f016/src/core.ts#L14
2. `InfoMessage` is marked as `initialized` (`attrs.ts`):
https://github.com/github/catalyst/blob/a8fb3ba59a4ac258d0fe64a50ecd3b6997f5f016/src/attr.ts#L40
3. The original `connectedCallback()` is executed, but `initializeAttrs()` would hit that early-return condition.
4. `this.open` is stuck in its default state (`true`) 😔
Hướng dẫn đóng góp
Hướng nghiên cứu
Start by reading src/attr.ts around the initialized guard and src/core.ts where controller wraps connectedCallback(). Reproduce the InfoMessage example with initializeAttrs(this, ['open']) and data-open="false". Done means manual initialization without @attr applies the attribute value instead of leaving open at true.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- typescript
- Lĩnh vực
- frontend
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100