2015-09-05 96 views
2

我一直在尋找從Blaze移動到React作爲我的Meteor應用程序的前端。我似乎無法找到等價的助手在大火其使用UI.registerHelper流星和反應:幫手

在大火UI.registerHelper讓您可以在任何模板中使用設置全局訪問幫手。

一個典型的例子可能是一個幫助將ISO日期轉換爲人類可讀的日期格式。

從我所看到的,React類可以有自己的屬性,它們可以是執行幫助類任務的函數。但我看不到的是你如何在全球範圍內創建它們。

當在流星中使用React時,這是如何實現的?

回答

0

我以前沒有用過反應。儘管在流星中,我認爲設置全球可訪問的幫助程序不是解決此問題的好方法,因爲它可能會污染應用程序名稱空間。

因此,我總是使用一些模塊加載程序(如Require.js)來定義有用的幫助程序功能,作爲util模塊,並在您的其他代碼中需要它。

我希望這個通用的解決方案可以幫助你:-)

+0

我相當肯定'UI.registerHelper'是跨大火模板幫手共享的首選方法。在[Blaze Docs](http://meteor.github.io/blaze/docs.html#ui_registerhelper)中,它表示_Defines可以在所有模板中使用的幫助函數._ 我想知道您可能會造成什麼樣的危害有很多幫手和污染它的名字空間? – onepixelsolid

1

你並不需要一個幫手的反應,因爲在DB的變化將引發流星混入的變化,從而trigging的變化您的render()。所以,你需要的只是一個全局函數。

file: formatDate.jsx

module.exports = function(dateStr) { 
    return new Date(dateStr); 
} 
在您的組件的頂部

則:

let formatDate = require('./formatDate.jsx')

+1

感謝您解釋re:反應。我完全明白這一點。幾個Qs:'require('./formatDate.jsx')'的使用是否來自Meteor或React本地?這種方法對Meteor或React是否共同?對不起,如果這聽起來愚蠢,我只是想使用推薦的技術。 – onepixelsolid

+1

'require'是commonjs的標準,被節點採用。它帶有反應(Meteor在默認情況下打斷它或自己的包系統,不知道如何)。代替要求,您可以在webpack中使用ES2015模塊語法,但這很麻煩。 –

+0

隨着我們的發言,情況正在改變。 Meteor 1.3版本與NPM的互操作性有很大的不同,並且可以直接使用「require」: https://forums.meteor.com/t/meteor-1-3-early-beta-now-available/ 14723 關於主題;由於react會將視圖放入JavaScript文件中,因此您可以直接訪問您之前在Meteor + Blaze中使用的任何類型的「幫助程序」。我認爲這個(馬特K)答案在這個意義上是正確的。只需使用單個大括號{}並引用該對象,即可訪問任何您想要的JavaScript代碼。 –