2016-07-08 20 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()方法嗎?

原因:我必須使用舊版本的react-router,我需要一個帶有一些mixin的舊ES5類來轉換到不同的路由。我的計劃是讓我們的主類爲ES6的時候讓Linker類進行轉換。

+0

爲什麼Linker無法與[refs](https://facebook.github.io/react/docs/more-about-refs.html)聯繫? 你應該直接調用構造函數React $元素永遠不會 – Yozi

+0

@Yozi是的,發現也是,它工作得非常好。 – Phillipp

回答

0

如果您需要訪問沒有任何上下文的函數,那麼您可以直接在Linker的原型屬性中找到它。

Linker.prototype.foo(); 
+0

這在我的情況下不起作用,因爲沒有上下文,他無法找到路由器。但是,當你不需要上下文時它似乎工作。 – Phillipp

+0

不用擔心。在標記接受的答案之前,您可能需要考慮編輯並重新編寫問題,例如您在工廠實例中查找方法的示例,而不是組件實例。 –

+0

我編輯了這個問題,並將您的答案標記爲正確的答案,因爲這確實是我的問題的正確答案,即使它不適合我,因爲我需要上下文。 – Phillipp

相關問題