Vladimir
Привет всем! Есть url, в котором есть <p> параграфы с текстом. Как можно пропарсить или получить этот текст и перевести в нативный <Text> ? Буду очень благодарен
Никита
Привет всем! Есть url, в котором есть <p> параграфы с текстом. Как можно пропарсить или получить этот текст и перевести в нативный <Text> ? Буду очень благодарен
я для себя такое написал. Вроде работает тут правда недо-typescript, но пользоваться можно. Нужно ставить react-native-html-parser import React from 'react'; import { TextStyle, Text, Linking, StyleSheet, TextProps } from 'react-native'; // @ts-ignore import { DOMParser } from 'react-native-html-parser'; const styles = StyleSheet.create({ bold: { fontWeight: '800', }, h: { }, }); interface Props { children: string, style: TextStyle, } export default class ReachText extends React.Component<Props> { renderElement(elem: any, index: number) { const nodeValue = elem.nodeValue && elem.nodeValue.trim(); const textProps: TextProps = {}; let value: undefined | React.ReactElement = undefined; switch (elem.nodeName) { case 'a': textProps.onPress = () => { const { attributes } = elem; let url = ''; for (let i = 0; i < attributes.length; i++) { if (attributes[i].name === 'href') { url = attributes[i].value; Linking.openURL(url); return; } } }; value = <React.Fragment>{nodeValue}{this.renderChilds(elem.childNodes)}</React.Fragment>; break; case 'ul': value = <React.Fragment>{nodeValue}{'\n'}{this.renderChilds(elem.childNodes)}</React.Fragment>; break; case 'li': value = <Text>* {nodeValue}{this.renderChilds(elem.childNodes)}{'\n'}</Text>; break; case 'h': textProps.style = styles.h; value = <React.Fragment>{nodeValue}{this.renderChilds(elem.childNodes)}{'\n'}</React.Fragment>; break; case 'strong': textProps.style = styles.bold; value = <React.Fragment>{nodeValue}{this.renderChilds(elem.childNodes)}</React.Fragment>; break; case 'b': textProps.style = styles.bold; value = <React.Fragment>{nodeValue}{this.renderChilds(elem.childNodes)}</React.Fragment>; break; case 'p': value = <React.Fragment>{nodeValue}{this.renderChilds(elem.childNodes)}{'\n'}</React.Fragment>; break; case 'br': value = <React.Fragment>{nodeValue}{this.renderChilds(elem.childNodes)}{'\n'}</React.Fragment>; break; case '#text': value = <React.Fragment>{nodeValue}{this.renderChilds(elem.childNodes)}</React.Fragment>; break; default: value = <React.Fragment>{nodeValue}{this.renderChilds(elem.childNodes)}</React.Fragment>; } return ( <Text key={index} {...textProps} > {value} </Text> ); } renderChilds(elems: any[]) { if (elems) { const childs = []; for (let i = 0; i < elems.length; i++) { childs.push(this.renderElement(elems[i], i)); } return childs; } return null; } render() { const text = this.props.children; let doc = undefined; if (text) { doc = new DOMParser().parseFromString(text, 'text/html'); } return ( <Text style={this.props.style}> {doc ? this.renderChilds(doc.childNodes) : null} </Text> ); } }
Vladimir
И еще вопрос. Как можно сделать такое? Ссылка на аудио есть .
Vladimir
Victor
Привет всем, у меня довольно абстрактный вопрос. Какие существуют бест практикс в организации стилей ?
Victor
Victor
В новом проекте я решил попробовать организовать глобальные стили таким образом
Victor
и уже в элементы через массив вставлять нужные глоабльные стили
Victor
мол style={[fonts.mt_regular_16, colors.white]}
Victor
В таком случае, при измении допустим шрифта при редизайне, придется прыгать по всем компонентам и ручками менять все это
Irakliy
мы используем отдельные файлы для каждого компонента + глобальные переменные (цвета, отступы и т.д), которые импортируются, при необходимости
Alexander
А почему бы что-нибудь для тем не юзать? Тот же styled-components идеально подойдет
Alexander
Всем привет. Товарищи. Кто то от react-native-device-info ловил?
Alexander
Я вроде androidx выпилил а при с борке релиза получа. Кстати при сборке дебаг версии все окей
Vitaly
что на обычном реакте что на RN ни одного компонента не ператащил, наверно я что то делаю не так ) у меня они все какие то уникальные из проекта в проект
Danila
достался от другого разраба пак компонентов, сначала воротил нос, а потом привык, что в каждом проекте одинаковые блоки)
Mal
Смотрю твои видосы! спасибо!
Anonymous
Всем привет! Коллеги, подскажите, пожалуйста, у меня приложение для прохождения тестов. Оно запрашивает с сервера html-код с текстом вопроса, и через 'react-native-render-html' я его отображаю. Но если в этом вопросе есть изображение, оно некрасиво подгружается после рендеринга. Как можно сделать предзагрузку изображения?
Anonymous
Пробую при помощи fetch загружать изображение, предварительно выделив url регуляркой, но что-то пока не получается, плюс не уверен, что приложение автоматически сохранится в кеш и загрузится сразу с него... Выдает такую ошибку: SyntaxError: Unexpected token � in JSON at position 0 at parse (<anonymous>) at tryCallOne (W:\edu\rx\vo\node_modules\promise\setimmediate\core.js:37)... Код предельно простой, казалось бы... const imagePrel = await fetch('https://images.pexels.com/photos/459225/pexels-photo-459225.jpeg', { method: 'GET'});
Irakliy
uri же
Anonymous
uri же
Туплю, не понял
Яков
Спасибо за хорошие видеолекции Удачи и успехов во всем!
Irakliy
Туплю, не понял
https://facebook.github.io/react-native/docs/image
Kto?
Anonymous
https://facebook.github.io/react-native/docs/image
Вы предлагаете отдаваемый с сервера html вручную преобразовывать в компоненты react-native? Мне бы отображать все как есть, только предзагрузить картинку в кеш...
Anonymous
Нет, просто есть уже работаютщий сайт, стоит задача отображать html с вопросами, чтобы не переделывать все. Задача, в принципе, решена, только на слабом интернете картинки подгружаются рывками - вот хотелось бы показывать прелоадер, пока они грузятся.
Danila
и lazy loading
Vitaly
выношу, если знаю, что в проекте буду юзать не один раз, конкретно цель, чтобы перенести его в другой проект, не преследую, достаточно сложно сделать его настолько универсальным )
Vitaly
ну с хедером согласен, можно в теории заморочится, но пока что приходилось только в одном проекте юзать свой кастомный
Eugene
можно посмотреть на @feature_slices подход 🤔интересно разбивать компоненты по атомик в RN
Vitaly
пока что в трех проектах у меня максимально уникальные инпуты, там нечего общего выносить
Anonymous
зачем тогда вообще приложение? Когда для этого есть браузер
Вообще, я над такими вопросами не думаю - нам как татарам, наступать - бежать, отступать - бежать. Захотело руководство приложение.
Dmitry
Народ, а anroid эмулятор реально вообще с https подружить?
Danila
Можно как-то задавать детоксу какие тесты выполнять? (чтобы брал не все .spec файлы, а нужные сейчас)
Dmitry
А почему возникло сомнение?
потому что все https запросы возвращают network error
Dmitry
тогда как в ios симуляторе все ок
Anonymous
А работаете с мака?
Kto?
Там вроде есть такоц прикол, что нужно Днс сервер гугловскиц прописать
Kto?
Чтобы было нормально
Anonymous
Скорее всего ошибка какая-то. Что за эмулятор, не дружащий с хттпс
Dmitry
Nexus 5X API 28
Кирилл
Nexus 5X API 28
Эмулятор от AS? раньше работали запросы?
Dmitry
Dmitry
59
Кирилл
у меня тоже периодически отваливается - вот это помогает
Kto?
Kto?
59
Сделай вот это MacOSX: Open "System Preferences" Click on "Network" Select the network which your computer is connected and click on "Advanced" Select "DNS", Select the "+" button, type "8.8.8.8" Select "Ok" and "Apply"
Kto?
Должно помочь
Kateryna
кто знает как называется такая иконка?
Maxim
share
Dmitry
Должно помочь
сейчас попробую
Daniil
кто что думает по поводу glamorous-native? Стоит использовать или были проблемы?
Dmitry
Должно помочь
да, заработало!
Kto?
:)
Vladimir
Обсуждали уже jettifier для react-native? https://github.com/mikehardy/jetifier#usage-for-source-files
Anton
Привет. Нужно сделать приложение с поддержкой автомоного режима, чтобы работало оффлайн. Подскажите пожалуйста делал ли кто нибудь, может есть что-то готовое для примера?
Денис
redux-persist
Dmitry
читаю статьи, но их мало и все старые. Куда вообще посоветуте посмотреть?
Так все просто же, кэшируешь данные, потом синхронизируешь с сервером
Anton
Так все просто же, кэшируешь данные, потом синхронизируешь с сервером
на теории это я тоже понимаю) а с помощью чего кэшировать то?
Dmitry
Вариантов масса
Vladimir
Dmitry
AsyncStorage, FS
Anton
Вариантов масса
ну не в asyncStorage же пихать?
Anton
why?
большое количество данных. Или там пофиг?
Vladimir
там вроде было ограничение в 64к на ключ
Vladimir
в остальном - пофиг
Anton
Всем спасибо за помощь
сodecurry
Кто-нибудь использовал mqtt в качестве брокера?
GrafMine
ребят, есть такая логика работающая на вебе :
GrafMine
const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');