Excluding a single property from Object freezing

Ouverte
#928 6 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 4 jours

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
30/100
Type d'issue
Fonctionnalité
Clarté
À clarifier
Activité
À l'abandon
Stack technique
javascript, typescript
Domaine
tooling

Piste de recherche

Examinez le CodeSandbox lié et comparez le premier test réussi avec le deuxième test échoué. Vérifiez comment setUseProxies(true) et setUseProxies(false) affectent l’objet gelé et le tableau d’observateurs. La tâche est terminée lorsqu’il a été déterminé si une seule propriété peut être exclue du gel et que le comportement pris en charge ou la limitation a été documenté.

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

Description

issue-lacks-relevant-information question

🙋‍♂ Question

I am trying to buld a simple Subject/Observer pattern together with immerjs to ensure consistent update propagation in my project.
Right now immerjs is causing some trouble because I want to register an observer to an object that has run through immer and is now frozen.

Error: [Immer] This object has been frozen and should not be mutated

Basically I have to exclude the array of observers from getting touched by immer. How could I achieve that?
If it's not possible, why?

Link to repro

The codesandbox tests don't trigger my observers for some reason.
Running the same code locally gives the correct result.
The first test passes and the second test fails with the above error.

https://codesandbox.io/s/xmzig2

Environment

  • Immer version: 9.0.12
  • typescript 4.6.3
  • Jasmine 4.1.0
  • Occurs with setUseProxies(true)
  • Occurs with setUseProxies(false) (ES5 only)
Langage dominant
JavaScript
Étoiles
29k
Forks
905
Merge moyen
3 j 16 h
PR mergées (30 j)
22

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

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 immerjs/immer

Toutes les issues de immerjs/immer

Issues similaires

Plus d'issues JavaScript

Recevez les nouvelles issues par e-mail

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