2017-08-31 1 views
0

Ich frage mich, wie soll ich mich wenden Eigenschaften in staatlichen Komponente, die auf eine andere Eigenschaft abhängen, zum Beispiel:Wie gehst du über State-Eigenschaft in Abhängigkeit von einer anderen Eigenschaft (aus derselben Klasse)?

class Sample extends Component { 
    constructor(props) { 
    super(props); 
    this.state = { 
     mainProperty: 1, 
     something: { 
     dependingOnMainProperty: `foo${this.state.mainProperty}bar` 
     } 
    } 
    } 
} 

Grundsätzlich würde Ich mag dependingOnMainProperty automatisch aktualisiert werden, wenn ich mainProperty durch setState ändern. Soll ich dafür eine Funktion schreiben oder gibt es eine andere Lösung?

+1

Mögliche Duplikat [React.js mit Staat auf andere zustandsbasierten] (https://stackoverflow.com/questions/25145857/react-js-having-state-based-on -other-state) –

+0

State ist ein einfaches Objekt. Es wird nicht beobachtet oder berechnet. Einfach nur Werte. Ich würde Ihnen empfehlen, 'mobx' für das globale Zustandsmanagement zu verwenden. Es funktioniert hervorragend mit reagieren und hat die Fähigkeit, Werte zu beobachten und Werte basierend auf anderen Werten zu berechnen. – webdeb

Antwort

0

Sie können mit Gettern und Setter wie folgt tun;

class Component { 
 
    constructor(...props){ 
 
    props.forEach(prop => this[prop] = "whatever"); 
 
    } 
 
} 
 

 
class Sample extends Component { 
 
    constructor(...props) { 
 
    super(...props); 
 
    this.state = { 
 
     something: { 
 
     __mp__: "tester", 
 
     dependingOnMainProperty: `foo${this.mainProperty}bar`, 
 
     get mainProperty(){ 
 
      return this.__mp__; 
 
     }, 
 
     set mainProperty(v){ 
 
      this.__mp__ = v; 
 
      this.dependingOnMainProperty = `foo ${v} bar`; 
 
     } 
 
     } 
 
    }; 
 
    } 
 
} 
 

 
var s = new Sample("a", "b"); 
 
s.state.something.mainProperty = "hello"; 
 
console.log(s.state.something.dependingOnMainProperty);

Verwandte Themen