2016-07-08 5 views
0

У меня есть класс следующие ReactJs:Вызов функции на объект класса компонента ReactJs

var Linker = React.createClass({ 
    foo: function(){ 
    console.log('foo') 
    }, 

    render: function(){ 
    return (
     <div></div> 
    ); 
    } 
}); 

Теперь я хочу, чтобы вызвать функцию Foo() с внешней стороны:

Linker.foo(); 

Но броски :

app.js:4654 Uncaught TypeError: Linker.foo is not a function 

Может ли кто-нибудь сказать мне, как вызвать метод foo()?

Причина: Мне нужно использовать старую версию реактивного маршрутизатора, где мне нужен старый класс ES5 с некоторыми миксинами для перехода на другой маршрут. Мой план - позволить классу Linker выполнить переход, в то время как мой основной класс - ES6.

+0

Почему линкер не может быть присоединен к [refs] (https://facebook.github.io/react/docs/more-about-refs.html)? Вам следует называть конструктор вызова React $ Element never – Yozi

+0

@Yozi Да, нашел это тоже, что очень хорошо работает. – Phillipp

ответ

0

Если вам нужен доступ к функции без какого-либо контекста, вы можете найти ее непосредственно в свойстве прототипа для Linker.

Linker.prototype.foo(); 
+0

Это не сработало в моем случае, потому что без контекста он не может найти маршрутизатор. Но, похоже, он работает, когда вам не нужен контекст. – Phillipp

+0

Не беспокойтесь. Возможно, вам стоит рассмотреть возможность редактирования и повторного формулирования вопроса до маркировки принятого ответа, как в примере, который вы искали для метода на заводском экземпляре, а не в экземпляре компонента. –

+0

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

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