【问题标题】:Meteor and React: HelpersMeteor 和 React:助手
【发布时间】:2015-12-01 05:15:16
【问题描述】:

我一直在考虑从 Blaze 迁移到 React 作为 Meteor 应用程序的前端。我似乎找不到在 Blaze 中使用 UI.registerHelper

helpers 等价物

Blaze 中的UI.registerHelper 允许您设置可在任何模板中使用的全局可访问的助手。

一个典型的例子可能是将 ISO 日期转换为人类可读的日期格式的助手。

据我所知,React 类可以有自己的属性,这些属性可以是执行类似助手任务的函数。但我看不到您是如何在全球范围内创建它们的。

在 Meteor 中使用 React 是如何实现的?

【问题讨论】:

    标签: javascript meteor reactjs


    【解决方案1】:

    您不需要助手的反应性,因为数据库中的更改将触发流星混合的更改,从而触发您的render() 的更改。所以,你只需要一个全局函数。

    file: formatDate.jsx

    module.exports = function(dateStr) {
      return new Date(dateStr);
    }
    

    然后在组件的顶部:

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

    【讨论】:

    • 感谢您解释 re: 反应性。我完全明白。几个问题:require('./formatDate.jsx') 的用法是 Meteor 还是 React 自带的?这种方法是 Meteor 还是 React 通用的?抱歉,如果这听起来很愚蠢,我只想使用推荐的技术。
    • require 是commonjs的标准,被node采用。它带有反应(Meteor 默认情况下会破坏它,或者他们自己的包系统,不确定如何)。代替 require 你可以使用 ES2015 模块语法和 webpack,但这更棘手。
    • 这种情况正在发生变化。 Meteor 1.3 版本在与 NPM 的互操作性方面取得了长足的进步,并让您可以直接使用“require”:forums.meteor.com/t/meteor-1-3-early-beta-now-available/14723 On topic;因为 react 将视图放在 javascript 文件中,所以您可以直接访问之前在 Meteor + Blaze 中使用的任何类型的“帮助程序”。我认为这个(Matt K)的答案在这个意义上是正确的。只需通过使用单个花括号 {} 并引用对象来访问您想要的任何您想要的 javascript 代码。
    【解决方案2】:

    我以前没有使用过 react。虽然在meteor中,我认为设置全局可访问的助手不是解决这个问题的好方法,因为它可能会污染应用程序命名空间。

    所以我总是使用一些模块加载器,例如 Require.js,将有用的帮助函数定义为 util 模块,并在您的其他代码中使用它。

    我希望这个通用解决方案可以帮助你:-)

    【讨论】:

    • 我相当肯定 UI.registerHelper 是跨 Blaze 模板共享助手的首选方法。在Blaze Docs 中,它说定义了一个可以从所有模板中使用的辅助函数。我想知道拥有大量辅助函数并污染它的命名空间会造成什么危害?
    猜你喜欢
    • 1970-01-01
    • 2015-01-06
    • 2017-12-16
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2015-09-20
    相关资源
    最近更新 更多