Attrs initialization without `@attr` decorator

Ouverte
#207 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
typescript
Domaine
frontend

Piste de recherche

Commencez par lire src/attr.ts autour du guard initialisé et src/core.ts, où controller enveloppe connectedCallback(). Reproduisez l’exemple InfoMessage avec initializeAttrs(this, ['open']) et data-open="false". C’est terminé lorsque l’initialisation manuelle sans @attr applique la valeur de l’attribut au lieu de laisser open à true.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

@attr

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>
  1. controller(InfoMessage) wraps original connectedCallback() and calls:

https://github.com/github/catalyst/blob/a8fb3ba59a4ac258d0fe64a50ecd3b6997f5f016/src/core.ts#L14

  1. InfoMessage is marked as initialized (attrs.ts):

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

  1. The original connectedCallback() is executed, but initializeAttrs() would hit that early-return condition.
  2. this.open is stuck in its default state (true) 😔
Langage dominant
TypeScript
Étoiles
1.4k
Forks
61
Merge moyen
1 j 15 h
PR mergées (30 j)
8

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de github/catalyst

Toutes les issues de github/catalyst

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.