Wie kann ich eine Javascript-Bibliothek wie moment.js verwenden, um native zu reagieren?


75

Was ist die empfohlene Methode, um native Javascript-Bibliotheken in React Native zu verwenden? Gibt es spezielle Einschränkungen?

Antworten:


109

Kinderleicht! Führen Sie im Stammverzeichnis Ihres Projekts einfach Folgendes aus:

npm install moment --save

Dann können Sie es in Ihren Code importieren:

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

Die Einschränkungen wären alles, was versucht, den Browser zu "erreichen" (was in diesem Zusammenhang nicht existiert). Deshalb gibt es Polyfills für Dinge wie XHR.

Die offizielle Dokumentation enthält Beispiele zur Verwendung der Moment-Bibliothek


3
Es sieht nicht so aus, als würde das tatsächlich funktionieren. Das gleiche gilt für lodash. Einige Dinge funktionieren, wie das Flussmittelpaket, andere nicht.
Jacob

1
Ich habe es mit Moment versucht und es funktioniert definitiv. Was scheint das spezifische Problem zu sein?
Colin Ramsay

1
Haben Sie andere ausprobiert, wie Lodash? Es funktioniert auch nicht für mich. Das exportierte Modul von require('lodash')ist ein leeres Objekt. Ich habe auch 'lodash-node' ausprobiert.
Jacob

Es sieht so aus, als würden andere dasselbe berichten: github.com/facebook/react-native/issues/406
Jacob

Nur meine 2 Cent für das Loadash-Problem, und ich bin ein Noob, also nimm mein Wort nicht dafür, aber in React Native benötigen einige Bibliotheken OS-abhängigen Code, dh in xcode oder android. Ich weiß noch nicht genug darüber, um weitere Kommentare abzugeben. Ein anderer Gedanke ist, dass Importanweisungen unabhängig von package.json standardmäßig im Ordner node_modules angezeigt werden. Es ist auch möglich, dass Ihre Importanweisung falsch ist. Sie können auch Varianten ausprobieren: {func} aus 'lib' importieren oder * aus 'lib' importieren
John

10

Einige der momentanen Methoden funktionieren in React Native, andere nicht. Ich vermute, es hat mit Zuhörern zu tun.

Ich kann Moment zum Formatieren verwenden:

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

Aber nicht für die aktive Formatierung:

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

5

Um eine npm-Bibliothek zu verwenden, verwenden Sie einfach diesen Befehl mit dem jeweiligen Bibliotheksnamen

npm install moment --save

zB) npm installiere {deinen Bibliotheksnamen hier} --save

dann einfach in deine Klasse importieren und verwenden

import moment from 'moment';

5

Wenn Sie moment.js speziell für "Reagieren" oder "Reagieren" verwenden möchten react-moment, sehen Sie sich unter https://github.com/headzoo/react-moment eine Reaktionskomponente für die Momentbibliothek an .

Führen Sie Folgendes aus, um React-Moment in React Native zu verwenden:

npm install --save moment react-moment

Dann in der Datei möchten Sie Moment verwenden:

import Moment from 'react-moment';

Verwenden Sie es schließlich wie gewünscht, zum Beispiel:

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

Die Requisite element={Text}ist speziell für reaktive native. Es stellt sicher, dass die resultierende Zeichenfolge in einer TextKomponente gerendert wird . Ohne dies würde eine native Reaktion einen Fehler auslösen.


1
element={Text}Dieses Ding hat meinen Fehler behoben. Danke !!
Neha

2

Es sieht so aus, als ob einige npm-Module derzeit nicht mit dem Packager kompatibel sind . Ich habe mich noch nicht wirklich mit dem Warum befasst, aber ich habe darauf zurückgegriffen, einen Anbieterordner zu haben und über die Webversion zu kopieren, aber ganz oben, speziell zu setzen

/** * @providesModule moment */

Und unten ändern Sie es bis zu:

module.exports = moment;

Ich bin mir noch nicht sicher, ob dies der richtige Weg ist, aber die Verpackung ist für alle noch ziemlich neu.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.