2015-12-28 3 views
6

Я хочу реализовать следующие функциональные возможности https://facebook.github.io/react/tips/expose-component-functions.html, но я использую ES6 синтаксисExpose функции компонентов в ES6

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

Когда я называю initialFunc в моем родительском классе

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

я получаю следующее сообщение об ошибке:

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

Любые идеи, как я могу запустить функцию моего дочернего компонента?

+0

Я просто хочу, чтобы мой ребенок ждать родительский компонент для установки. – Tomasz

+3

Пожалуйста, покажите нам метод рендеринга для родителя. –

+0

Ребенок не будет монтироваться до тех пор, пока не будет установлен родительский элемент, поэтому в зависимости от того, насколько тщательно вам нужно управлять заказом, вы можете просто использовать 'componentDidMount' в дочернем элементе. –

ответ

-1

Попытайтесь получить доступ к вашей ссылке, используя "." Синтаксис

Это работает так:

this.refs.mapView.initialFunc() 

Это здесь показано в React документы: https://facebook.github.io/react/tips/expose-component-functions.html

+2

Это делает нулевую разницу. – Bergi

+1

На самом деле refs строками устарели. Используйте стиль обратного вызова: https://facebook.github.io/react/docs/refs-and-the-dom.html#legacy-api-string-refs – Yuval

Смежные вопросы