Vitaly
совсем недавно ребята тут выкладывали примеры проектов с разными подходами, там похожая штука была, не совсем для это использовалась но как вариант
Ivan
Там было вроде redux vs. mobx если я правильно понимаю о чем речь :)
Alexandr
Спасибо. Еще вопрос. Есть флэт лист(постов), в нем массив из firebase. Как добавить посты в избранное?
Vitaly
Alexandr
допустим, пользователь добавляет посты. Другой пользователь может добавтиь эти посты в список избранного. Есть вариант, добавить в базу поле favourite, и проверять на true/false
Ivan
Мне кажется вопросы по архитектуре базы это немного не сюда :)
Vitaly
Alexandr
ЕЩе, по поводу передачи данных, советовали navigation props, но так и не получилось разобраться.. можно ли как-то с ними? Сейчас попробую вариант: подтягивать uid авторизованного пользователя и сранивать его с записью в firebase
Ivan
Ivan
Ну я вижу два варианта.
Либо в исходном экране получать данные и передавать их как navigation props
Либо уже на самом экране где вам эти данные нужны запрашивать их например в конструкторе или componentWillMount
По navigation props в их документации вроде всё понятно расписано
Alexandr
Почитал про navgiation props, но не сообразил что-то -_-
Dmitry
Ivan
Dmitry
кто нибудь реализовавывал скалирование текста в зависимости от колическая строк?
Alexandr
Vitaly
да
а как ты делаешь переход, navigation.navigate ?
Dmitry
Dmitry
Что именно не сообразил? Вторым аргументом прокидываешь и все
Vadim
Вроде да. На всякий случай принципы из которых я исхожу:
1. package.json нужен только metro, и только на рантайм (либо при сборке бандла, либо при запуске в "живом" режиме, который react-native start). Он единственный из всех инструментов сканирует весь projectRoot и любые найденные папки с package.json, считает js пакетами (как уж он при этом приоритеты в node_modules разрешает, я не заню, там сложно).
2. В vscode поддержка js сделана через typescript. Всё, что поддерживает typescript (влючая конфиги, будет "понимать" и vscode).
3. Проектом для typescript является папка с файлом tsconfig.json (jsconfig.json тоже должен работать, при этом по умолчанию включается опция allowJs, которая заставляет typescript процессить и чистый js)
3. У typescript есть два инструмента для настройки резолвера: moduleResolution и (baseUrl + paths). Первое, нужно выставлять в node, потому что иначе не будут резолвиться node_modules... А вот второе позволяет добавить произвольный мэппинг при резолвинге абсолютных путей.
baseUrl задает базовый путь относительно проекта, который используется для импорта абсолютных модулей (кто там в приоритете при этом node_modules или то, что по этому пути лежит - не знаю, не пробовал такие наложения делать)
paths - это мэппинг абсолютного имени модуля (то, что в import пишется) на путь относительно baseUrl, что позволяет ещё и алиасинг делать.
Но в данной конфигурации paths не нужны, потому что уже и так есть папка совпадающая по имени с импортируемым модулем.
Вот. Из идей только попробовать мою демку склонировать и открыть в vscode и проверить работает ли там.
Спасибо за детальное объяснение!
Вроде заставил vs code подсказывать (правда как-то медленно оно работает), но он сейчас подсказывает абсолютный путь components/Component, а metro выдает ошибку, потому что ему нужен app/component/Component.
чей ты
тут все разжевано
https://www.youtube.com/watch?v=YRKnkTbzur4
Max
Здравствуйте. Смотрю, тут react navigation обсуждается, так вот хотел спросить: нормальной ли является практика выносить навигацию redux action creators, вынося по nav without props?
Dmitry
Max
Навигация по умолчанию передаётся как проп
Max
Но в документации есть возможность вынести ее отдельно и использовать где угодно
Max
В том числе в экшенах redux
Eugene
Норм практика:)
Alexsandr
Допустим тебе нужно проверить авторизацию
Alexsandr
Ты же ее будешь в редаксе проверять)
Alexsandr
И удобнее там сделать навигацию
Max
Да, хороший кейс
Eugene
https://github.com/hellpirat/connected-react-navigation 🌚накидал для такого мидлвару
Alexsandr
Ну мы же щас про Редакс
Alexsandr
:)
Eugene
осталось везде юзать graphql👀
Alexsandr
С темы не съезжаем :)
Alexsandr
Alexsandr
Я все пытаюсь у себя на работе протолкнуть)
Eugene
Я в пет проектах пока тестю его 🤔
Max
Это какой-то ситуативный аналог redux?
Alexsandr
Не правильно)
Eugene
тянуть весь apollo стек vs redux 🤔
Alexsandr
Смотри, Apollo у тебя держит свой стейт, который работает в связке с графкл, но если у тебя по классике рест
Alexsandr
Редакса хватит)
Alexsandr
Хотя и идеология такая же
Alexsandr
Ну такое, а если у меня не графкл
Alexsandr
То как мне быть?
Alexsandr
У тебя какая-то единственная Точка правды)
Vadim
Вроде да. На всякий случай принципы из которых я исхожу:
1. package.json нужен только metro, и только на рантайм (либо при сборке бандла, либо при запуске в "живом" режиме, который react-native start). Он единственный из всех инструментов сканирует весь projectRoot и любые найденные папки с package.json, считает js пакетами (как уж он при этом приоритеты в node_modules разрешает, я не заню, там сложно).
2. В vscode поддержка js сделана через typescript. Всё, что поддерживает typescript (влючая конфиги, будет "понимать" и vscode).
3. Проектом для typescript является папка с файлом tsconfig.json (jsconfig.json тоже должен работать, при этом по умолчанию включается опция allowJs, которая заставляет typescript процессить и чистый js)
3. У typescript есть два инструмента для настройки резолвера: moduleResolution и (baseUrl + paths). Первое, нужно выставлять в node, потому что иначе не будут резолвиться node_modules... А вот второе позволяет добавить произвольный мэппинг при резолвинге абсолютных путей.
baseUrl задает базовый путь относительно проекта, который используется для импорта абсолютных модулей (кто там в приоритете при этом node_modules или то, что по этому пути лежит - не знаю, не пробовал такие наложения делать)
paths - это мэппинг абсолютного имени модуля (то, что в import пишется) на путь относительно baseUrl, что позволяет ещё и алиасинг делать.
Но в данной конфигурации paths не нужны, потому что уже и так есть папка совпадающая по имени с импортируемым модулем.
Вот. Из идей только попробовать мою демку склонировать и открыть в vscode и проверить работает ли там.
Сделал через https://github.com/tleunen/babel-plugin-module-resolver, в общем. Вроде работает.
Alexsandr
Тогда мне редакс нужен :)
Vit
Клуб анонимных редакслюбов
Max
Хотя и идеология такая же
Спасибо, важно было знать
А то в движухе RN новичёк, так уже думал, что надо съезжать с редакса на что-то лучшее
Alexsandr
Alexsandr
так что нет 🙂
Vit
Хочешь поговорить об этом?)
Alexsandr
Vit
Покажи на этой кукле где он тебя трогал)
Dmitry
Столько костылей и геморра еще ни с чем не испытывал
Alexsandr
Alexsandr
Vit
Vit
Просто для некоторых это не костыли)
Dmitry
А мне вот действительно интересно, почему за него топят, ведь работает он, мягко говоря, не очень и работы только добавляет.
Eugene
интересная технология же
Vit
Если б за реакт так не топили он бы тоже не взлетел
Dmitry
да никакой технологии нет
Vit
Сейчас костыли через пару лет глядишь и получится чего
Dmitry
ты просто миришься с тем, что все запросы у тебя выполняются максимально долго, вот и вся технология
Vadim
Кто-нибудь сталкивался с таким? https://github.com/facebook/react-native/issues/22592
Vit
Жаль что рукожопы из аполо флаг подхватили.
У фб то ничо так задумка с релеем была
Vadim
Делаешь что-то типа:
import CurrencyHelper from './Currency';
import StringHelper from './String';
import CreditcardHelper from './CreditcardType';
import ValidationHelper from './Validation';
import RatioHelper from './Ratio';
import MiscHelper from './Misc';
export {
CurrencyHelper,
StringHelper,
CreditcardHelper,
ValidationHelper,
RatioHelper,
MiscHelper,
};
И сыпется все с включенным Hot Reload
Dmitry
что-то новенькое
Gena
Ага
Dmitry
Dmitry
и всякие там link-state и тд