2017-08-31 36 views
0

我不知道我應該怎麼做法,組件的狀態依賴於另一個屬性,例如性能:你怎麼去取決於另一個屬性(來自同一個班級)的州屬性?

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

基本上,我想dependingOnMainProperty自動更新當我改變mainProperty通過setState。我應該爲此寫一個函數還是有其他解決方案?

+1

[基於其它狀態React.js具有狀態(的可能的複製https://stackoverflow.com/questions/25145857/react-js-having-state-based-on - 其他狀態) –

+0

狀態是一個簡單的對象。它沒有被觀察或計算。簡單的價值。我建議你使用'mobx'進行全局狀態管理。它在反應方面效果很好,並且能夠根據其他值觀察值和計算值。 – webdeb

回答

0

你可能會對getter和setter做如下操作:

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);

相關問題