2016-06-15 9 views
1

ich automatisch die Benutzerdaten wie unten will erstellen, aber ich erhalte eine Fehlermeldung an der Linie beachten:Wie Reaktion in einem mobx Speicher

Uncaught Error: [mobx] Invariant failed: Cannot obtain atom from [object Object]

class AuthStore { 

@observable loggedIn = false; 
@observable userData; 

    constructor() { 
    observe(this, 'loggedIn', (change) => { 
      if (change.loggedIn) { 
      this.getUserData(); 
      } 
    }); 
    } 

    async getUserData() { 
    const response = await ajax({ 
     url: '/users/me', 
     method: 'GET' 
    }); 
    const data = await response.json(); 
    //todo handle some errors here 
    this.userData = data.user; 
    } 

} 
+1

die Version MobX verwenden Sie? Es gab einen Fehler in 2.2.2, bei dem das Attribut loggedIn im Konstruktor bei der Verwendung von Babel noch nicht initialisiert wurde. Dies ist in 2.3 behoben und als Work around können Sie eine Zeile in den Konstruktor einfügen, die lautet: 'this.loggedIn;' – mweststrate

+0

ja Konstruktor Initialisierung löste es. setze es als richtige Antwort – arisalexis

Antwort

1

Haben Sie es schon gelöst? Wenn nicht, versuchen reaction statt observe mit:

reaction(
() => this.loggedIn, 
    loggedIn => loggedIn && this.getUserData() 
) 
Verwandte Themen