github / github/catalyst

Attrs are never observed unless added with `@attr` decorator

未关闭
#208 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
@attr
主要语言
TypeScript
星标
1.4k
派生
59
平均合并
22 小时 12 分钟
30 天内合并 PR
5

描述

Hi folks,

While I was testing the attributes — trying to work my way around #207 — I found another subtle detail. Manually initialized attributes are never observed.

Catalyst's guide provides the following example for vanilla users: https://github.com/github/catalyst/blob/main/docs/_guide/attrs.md#what-about-without-decorators.

Please notice the second argument there `defineObservedAttributes(HelloWorldElement, ['foo'])` and compare it with the actual function declaration:

https://github.com/github/catalyst/blob/a8fb3ba59a4ac258d0fe64a50ecd3b6997f5f016/src/attr.ts#L99

It doesn't expect the second argument (`arguments` aren't used either).

Now, internally `defineObservedAttributes()` pulls attribute names from `getAttrNames()`, which, in turn, pulls them from `attrs` (`WeakMap`). The only way to populate `attrs` is to use `@attr` decorator:

https://github.com/github/catalyst/blob/a8fb3ba59a4ac258d0fe64a50ecd3b6997f5f016/src/attr.ts#L15

Maybe I'm missing something, but it seems like there's no way to specify observed attributes without decorators. In any case, it'd be very nice to clarify that 🙂

Thank you!

贡献指南

打开贡献指南

调研方向

从 src/attr.ts 开始,重点查看 defineObservedAttributes() 和 getAttrNames(),然后将它们的行为与 docs/_guide/attrs.md 中的 vanilla 示例进行比较。确认手动初始化的属性是否可以在没有 @attr 的情况下被观察;当实现和指南对如何指定被观察的属性达成一致时,即表示完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
typescript
领域
frontend, web-dev
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。