Як я можу використовувати бібліотеку javascript, таку як moment.js, у рідній реакції


75

Який рекомендований спосіб використовувати власні бібліотеки javascript у реагуванні нативним? Чи існують якісь конкретні обмеження?

Відповіді:


110

Простенька! З кореня вашого проекту просто запустіть:

npm install moment --save

Тоді ви можете імпортувати його у свій код:

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

Обмеженнями буде будь-що, що намагається "дотягнутися" до браузера (якого в цьому контексті не існує). Ось чому для таких речей, як XHR, існують поліфіли.

В офіційній документації є приклади використання бібліотеки моментів


3
Здається, це насправді не працює. Те саме з лодашем. Деякі речі працюють, як пакет флюсів, а інші ні.
Яків

1
Я спробував це з моментом, і це точно працює. У чому полягає конкретна проблема?
Колін Рамсей

1
Ви пробували інших, як лодаш? Це не працює ні для мене, ні для мене. Експортований модуль із require('lodash')- порожній об’єкт. Я також спробував 'lodash-node'.
Jacob

Схоже, інші повідомляють про те саме: github.com/facebook/react-native/issues/406
Яків

Лише мої 2 центи на питання завантаження, і я нуб, тому не вірте мені на слово, але в React Native деякі бібліотеки вимагають коду, залежного від ОС, тобто в xcode або android. Я ще недостатньо цього знаю, щоб коментувати далі. Інша думка полягає в тому, що оператори імпорту за замовчуванням виглядають у папці node_modules, незалежно від package.json. Також можливо, що ваша заява про імпорт може бути неправильною. Ви також можете спробувати варіанти: імпортувати {func} з 'lib' або імпортувати * з 'lib'
Джон,

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

Якщо ви спеціально хочете використовувати moment.js для реагування або реагування рідного, подивіться на react-momentкомпонент реакції для бібліотеки моментів за адресою https://github.com/headzoo/react-moment .

Щоб використати moment-реакцію в реакції native, запустіть:

npm install --save moment react-moment

Потім у файлі, який ви хочете використати момент:

import Moment from 'react-moment';

Нарешті, використовуйте його за бажанням, наприклад:

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

Реквізит element={Text}спеціально призначений для рідної реакції. Це гарантує, що результуючий рядок відображається в Textкомпоненті. Без цього рідна реакція видасть помилку.


1
element={Text}ця штука вирішила мою помилку. Дякую !!
Нех

2

Схоже, що зараз деякі модулі npm несумісні з пакувальником . Насправді ще не розбирався, чому, але до чого я вдався, це наявність папки постачальника та копіювання через веб-версію, але вгорі спеціально

/** * @providesModule moment */

І внизу, змінивши його на:

module.exports = moment;

Ще не впевнений, що це правильний спосіб, але упаковка все ще досить нова для всіх.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.