2015-12-28 15 views
6

Chcę realizować następujące funkcje https://facebook.github.io/react/tips/expose-component-functions.html, ale używam ES6 składniExpose funkcje składników w ES6

@controllable(['center', 'zoom', 'hoverKey', 'clickKey', 'selectedCountry']) 
export default class ContactMapView extends Component { 
    constructor(props) { 
     super(props); 
     this.initialFunc = this.initialFunc.bind(this); 
    } 
    initialFunc() { … } 

Kiedy zadzwonić initialFunc w mojej klasie dominującej

componentDidMount() { 
    MapStore.addChangeListener(this._onChange.bind(this)); 
    this.refs['mapView'].initialFunc(); 
}; 

pojawia się następujący błąd:

TypeError: this.refs.mapView.initialFunc is not a function 

Jakieś pomysły, w jaki sposób mogę uruchomić funkcję mojego dziecka Komponent?

+0

po prostu chcę, aby moje dziecko czekać na składnikiem dominującym w montażu. – Tomasz

+3

Pokaż nam metodę renderowania dla rodzica. –

+0

Dziecko nie będzie montowane, dopóki rodzic się nie zamontuje, więc w zależności od tego, jak blisko będziesz kontrolować porządek, możesz po prostu użyć elementu 'componentDidMount' w elemencie potomnym. –

Odpowiedz

-1

Spróbuj uzyskać dostęp do ref przy użyciu "." składnia

To działa jak tak:

this.refs.mapView.initialFunc() 

Widać to tutaj w docs reagują: https://facebook.github.io/react/tips/expose-component-functions.html

+2

To czyni różnicę zero. – Bergi

+1

Rzeczywiste odwołania według ciągów są przestarzałe. Użyj stylu wywołania zwrotnego: https://facebook.github.io/react/docs/refs-and-the-dom.html#legacy-api-string-refs – Yuval