Attrs initialization without `@attr` decorator
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- typescript
- Bereich
- frontend
Rechercherichtung
Beginne damit, src/attr.ts rund um den initialisierten Guard und src/core.ts zu lesen, wo controller connectedCallback() umschließt. Reproduziere das InfoMessage-Beispiel mit initializeAttrs(this, ['open']) und data-open="false". Fertig ist es, wenn die manuelle Initialisierung ohne @attr den Attributwert anwendet, statt open auf true zu belassen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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
<script>
class InfoMessage extends HTMLElement {
open = true
connectedCallback() {
initializeAttrs(this, ['open'])
}
}
controller(InfoMessage)
</script>
<info-message data-open="false"></info-message>
controller(InfoMessage)wraps originalconnectedCallback()and calls:
https://github.com/github/catalyst/blob/a8fb3ba59a4ac258d0fe64a50ecd3b6997f5f016/src/core.ts#L14
InfoMessageis marked asinitialized(attrs.ts):
https://github.com/github/catalyst/blob/a8fb3ba59a4ac258d0fe64a50ecd3b6997f5f016/src/attr.ts#L40
- The original
connectedCallback()is executed, butinitializeAttrs()would hit that early-return condition. this.openis stuck in its default state (true) 😔
- Vorherrschende Sprache
- TypeScript
- Sterne
- 1.4k
- Forks
- 61
- Ø Merge
- 1 T. 15 Std.
- Gemergte PRs (30 T.)
- 8
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus github/catalyst
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 62/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 20/100
-
EcmaScript DecoratorsOffen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 42/100
Alle Issues in github/catalyst
Ähnliche Issues
-
normalizePropName strips `#` characters from Figma property names instead of only the `#id` suffixOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
figma/code-connect#419 ·
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
jeanibarz/knowledge-base-mcp-server#1268 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 78/100
Koenkk/zigbee-herdsman-converters#13820 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
A live recovery copy treats a large whole number and text with the same digits as the same valueOffenbug sharing & sync
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
Maintainer antworten meist innerhalb von 1 Tag
-
[prefer-expect-resolves] autofix leaves a stray ")" when the awaited expression is parenthesizedOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
jest-community/eslint-plugin-jest#2052 ·