我如何在React Native中使用诸如moment.js之类的JavaScript库


75

在本机反应中使用本机javascript库的推荐方法是什么?有没有具体限制?

Answers:


110

十分简单!从项目的根目录开始运行:

npm install moment --save

然后,您可以将其导入代码中:

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

限制将是任何试图“扩展”到浏览器的东西(在这种情况下不存在)。这就是为什么要使用XHR之类的polyfill的原因。

官方文件对如何使用时刻库实例


3
看起来这实际上不起作用。Lodash也是如此。有些东西可以工作,例如助焊剂包装,有些则不能。
雅各布

1
我已经尝试了一下,它确实可以工作。似乎是什么具体问题?
科林·拉姆齐

1
您是否尝试过其他人,例如lodash?这对我都不起作用。导出的模块require('lodash')是一个空对象。我也尝试过“ lodash-node”。
雅各布

看起来其他人正在报告同一件事:github.com/facebook/react-native/issues/406
Jacob

在loadash问题上只有2美分,我是一个菜鸟,所以请不要相信我,但是在React Native中,某些lib需要依赖于OS的代码,例如xcode或android。我对此还不了解,没有进一步评论。另一个想法是,无论package.json如何,Import语句默认情况下都在node_modules文件夹中查找。您的导入语句也可能是错误的。您也可以尝试使用各种变量:从'lib'导入{func}或从'lib'导入*
John John

10

目前,某些方法在React Native中有效,而其他方法则无效。我怀疑这与听众有关。

我可以使用一下矩进行格式化:

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

但不适用于活动格式:

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

5

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

npm install moment --save

例如。)npm install {您的库名在这里} --save

然后只需导入您的课程并使用

import moment from 'moment';

5

如果您特别想在react或react native中使用moment.js react-moment,请查看https://github.com/headzoo/react-moment中的矩量库的react组件。

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

npm install --save moment react-moment

然后在您要使用的时刻文件中:

import Moment from 'react-moment';

最后,根据需要使用它,例如:

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

该道具element={Text}专门用于响应本机。它确保结果字符串在Text组件中呈现。没有这个,react native将引发错误。


1
element={Text}这个东西解决了我的错误。谢谢!
Neha

2

目前看来,某些npm模块与packager不兼容。还没有真正弄清楚为什么,但是我一直想做的是拥有一个供应商文件夹并通过网络版本进行复制,但是最重要的是

/** * @providesModule moment */

并在底部将其更改为:

module.exports = moment;

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.