2017-05-15 1 views
0

Je suis purement curieux (explication de haut niveau) comment mobx.autorun() est assez intelligent pour parcourir la fonction qui lui est passée pour déterminer quelles observables sont accessibles?Comment mobx.autorun() sait à quelles observables vous avez accès?

+0

Je pense [** cet article de blog **] (https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254) du créateur de MobX est une excellente explication de comment cela fonctionne. – Tholle

Répondre

1

La petite histoire est que autorun ne pas analyser votre code à la recherche d'usages, mais enregistre plutôt chaque accès d'un observable dans le premier cycle. C'est pourquoi il doit courir une fois tout de suite.

Il a enveloppé les getter et setter de chaque observable afin qu'il puisse enregistrer ceux que vous utilisez (via le getter) et construire une liste de observable que votre fonction autorun utilisé. Si l'un d'eux change (via le setter), il le détectera et relancera votre fonction d'exécution automatique.