如何在本机反应中使用诸如 moment.js 之类的 javascript 库

Posted

技术标签:

【中文标题】如何在本机反应中使用诸如 moment.js 之类的 javascript 库【英文标题】:How can I use javascript library such as moment.js in react native 【发布时间】:2015-05-31 11:53:42 【问题描述】:

在 react native 中使用原生 javascript 库的推荐方法是什么?有什么具体的限制吗?

【问题讨论】:

【参考方案1】:

简单易懂!从项目的根目录运行:

npm install moment --save

然后你可以在你的代码中导入它:

import moment from 'moment';
var now = moment().format();

限制将是任何试图“接触”浏览器的东西(在此上下文中不存在)。这就是 XHR 之类的 polyfill 的原因。

official documentation 有关于如何使用矩库的示例

【讨论】:

这看起来并不实际。与 lodash 相同。有些东西有效,例如通量包,有些则无效。 我已经尝试过了,它确实有效。具体问题是什么? 你试过其他的吗,比如lodash?它对我都不起作用。从require('lodash') 导出的模块是一个空对象。我也尝试过“lodash-node”。 看起来其他人也在报告同样的事情:github.com/facebook/react-native/issues/406 只是我在 loadash 问题上的 2 美分,而且我是菜鸟,所以不要相信我的话,但在 React Native 中,一些库需要依赖于操作系统的代码,即在 xcode 或 android 中。我对此了解的还不够多,无法进一步评论。另一个想法是 Import 语句默认在 node_modules 文件夹中查找,而与 package.json 无关。您的导入语句也可能是错误的。您也可以尝试变体: import func from 'lib' 或 import * from 'lib'【参考方案2】:

一些即时方法在 React Native 中有效,而另一些则无效。我怀疑这与听众有关。

我可以使用 moment 进行格式化:

moment(new Date()).format("YYYY-MM-DD hh:mm:ss")

但不适用于主动格式化:

moment(new Date()).format("YYYY-MM-DD hh:mm:ss").fromNow()

【讨论】:

【参考方案3】:

要使用 npm 库,只需将此命令与相应的库名称一起使用

npm install moment --save

eg.) npm install your library name here --save

然后在你的类中导入并使用

import moment from 'moment';

【讨论】:

【参考方案4】:

如果你特别想在 react 或 react native 中使用 moment.js,请查看 react-moment,这是一个用于 moment 库的 react 组件,位于 https://github.com/headzoo/react-moment。

要在 react native 中使用 react-moment,运行:

npm install --save moment react-moment

然后在你要使用moment的文件中:

import Moment from 'react-moment';

最后,随意使用,例如:

<Moment element=Text fromNow>
     post.datePublished 
</Moment>

prop element=Text 专门用于 React Native。它确保生成的字符串在Text 组件中呈现。没有这个,react native 会报错。

【讨论】:

element=Text 这个东西解决了我的错误。谢谢!!【参考方案5】:

目前看来,一些npm modules are not compatible with the packager。还没有真正深入研究为什么,但我一直在做的是拥有一个供应商文件夹并复制网络版本,但在顶部专门放置

/** * @providesModule moment */

并在底部将其更改为:

module.exports = moment;

不确定这是否正确,但包装对每个人来说还是很新的。

【讨论】:

以上是关于如何在本机反应中使用诸如 moment.js 之类的 javascript 库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机反应创建登录以及如何验证会话

是否有可能从 facebook 图形 API 中不是我的页面中的某个帖子中获取诸如反应或喜欢之类的信息?

使用反应测试库测试离子组件

如何更改 moment.js 的语言?

Unix时间戳的moment.js格式?

如何在javascript中使用moment(moment.js)做大于或等于?