Лучший способ очистить веб-страницы и внедрить JavaScript с помощью React Native?

Недавно я начал использовать React Native для работы над приложением, которое включает веб-скрапинг. Мы использовали компонент под названием React Native WebView Bridge, который похож на библиотеку UIWebViewBridge в Obj-C, но имеет некоторые проблемы. Поскольку React Native является асинхронным, у нас возникли проблемы с возвратом информации из-за того, что приложение часто и непредсказуемо вызывает функцию рендеринга с помощью WebView Bridge. Иногда модуль WebView Bridge вызывает наш внедренный javascript 1 раз, а иногда — 3 раза.

Есть ли лучший способ очистить информацию и эффективно внедрить javascript в React Native?

Вот ссылка на WebViewBridge для React Native, который мы использовали.


person metacore    schedule 20.06.2016    source источник


Ответы (1)


Я использовал cheerio для анализа HTML-контента с веб-сайта, преобразования его в JSON и использования для передачи Реагировать компонент. Таким образом, вы получаете преимущества использования React Native, а не просто гибридного веб-приложения.

Вы можете найти пример в этом приложении React Native: https://github.com/stan229/ClubReadyApp

person stan229    schedule 23.06.2016
comment
Можете ли вы быть немного более конкретным на манипулировании? Вы не будете отображать HTML в DOM, но если вы хотите добавить некоторые атрибуты (например, класс, идентификатор, изменить innerHTML), вы можете это сделать. Рабочий процесс, которому я следую и обычно рекомендую (не зная всех особенностей вашего случая), заключается в извлечении необходимых данных из HTML-документа, использовании их для рендеринга компонентов и обработке бизнес-взаимодействий с помощью React Native. - person stan229; 26.06.2016
comment
Прости за это. Под манипулированием я подразумеваю, можете ли вы внедрить javascript, используя этот подход? Например, нажатие кнопки или ввод чего-либо в текстовое поле. Я хотел бы иметь возможность сделать это без того, чтобы мой введенный скрипт вызывался более одного раза методом рендеринга React. Это немного яснее? - person metacore; 27.06.2016