Dmytro
Всем привет, подскажите пожалуйста норм стартовый шаблон без expo. Чистый react-native.
不退転」
react-native init
#sasha
Привет всем, как лучше организовать многопоточность в реакт нейтив?
#sasha
а то некоторая работа с сетью как я понимаю, блокирует интерфейс
Dmitry
#sasha
в общем, работаю с UDP
#sasha
при открытии аппы начинаю слушать один порт, и иногда по акшену отправляю пакеты на другой порт
Gena
В js - никак. Надеюсь вы знаете, что JS по самой своей сути однопоточный?
#sasha
вот отправка начинает и глючить, именно интерфейс и задержка в пару секунд
Gena
Gena
На самом деле скорей всего всё ещё проще. Как вы шлете udp пакет?
#sasha
#sasha
let message = new Buffer([0xFF, 0x04, 0x00, 0x80, 0x00, 0xFF]);
console.log("Search device message: ", message);
return getState().socket.send(message, 0, message.length, PORT, HOST, err => {
if (err) throw err;
return dispatch({
type: SEARCH_DEVICES
});
});
#sasha
пример с акшена редакса
#sasha
сокет просто открываю let socket = dgram.createSocket("udp4");
Gena
https://github.com/tradle/react-native-udp/issues/47
Gena
android ведь?
#sasha
#sasha
окей, спасибо
#sasha
хренова
Gena
там есть PR, который это лечит
Gena
так что можно форкануть, накатить PR и ставить прям с github...
#sasha
#sasha
с 2017 не замерджен
#sasha
но спасибо большое
#sasha
буду думать
Gena
А вы diff, гляньте... единственное, что может пойти не так, надо посмотреть в каких версиях android это API присутствует
#sasha
Dmitry
Gena
Ага, похоже на то
Dmitry
Отвратительный дебаг на андройде
Dmitry
ничего найти невозможно
Dmitry
типа в ишью написано ну вы просмотрите все зависимости всех пакетов и где используются gsm отключите их
Gena
Вообще, я когда начал программировать на js, понял, насколько счастливыми людьми должны быть js-программисты. У них в 99% случаев этой проблемы нет. Потому что js - единственный из широко используемых языков, где модули/классы не глобальны. Там можно хоть 10 версий одной и той же библиотеки иметь в проекте и оно будет работать. Нигде такого больше нет, в C/C++/ObjC/Java в программе может быть только один статический символ - пакет, класс, глобальная переменная... Вслед за ними тот же принцип в скриптовых языках - perl/python/ruby... тоже самое...
Gena
Отсюда и проблемы в пакетных менеджерах такие... две либы хотят третью разных версий, а разрешить это можно только в одну из них...
Gena
Если ближе к делу, я где-то видел сниппет на gradle (возможно, даже здесь публиковали), который для конкретной либы форсит нужную версию по всем зависимостям.
Dmitry
да
Dmitry
но там рехнешься
Vitaliy
а потом что-то такое сделать в app/build.gradle :
implementation (project(':react-native-device-info')) {
exclude group: "com.google.android.gms"
}
Dmitry
Vitaliy
@quarrant @gblack9
вообще это вот так выглядело (в android/build.gradle, внутри allprojects, под блоком repositories)
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.google.android.gms')
details.useVersion('12.0.1')
if (details.requested.group == 'com.google.firebase')
details.useVersion('12.0.1')
}
}
}
Eldar
Ребят. У меня есть компонент который я импорчу в апп жс. В компоненте есть такой кондишн связанный со стейтом.
<View style={[
styles.squareButtonNumber,
this.state.defenseDiceStatus == 1 ? styles.squareButtonNumberSelected
: null
]}
>
Eldar
как правильно к стейту обратиться?
Dmitry
нельзя null же в стили
Vitaliy
@quarrant
можно ваш конфиг app/build.gradle посмотреть? может подскажу чего.
不退転」
Eldar
а со стейтом что делать?
Eldar
я вот что думаю, может вынести кондишн в функцию?
Eldar
Dmitry
不退転」
проверь сначала не опечатался ли ты, и есть ли у тебя вообще такое значение в стейте
Eldar
да, я сначала все накатал в апп жс, теперь разношу по компонентам
Никита
вероятно биндить контекст надо (стрелочной делать или bind)
Никита
undefined будет, в ошибке же написано
Eldar
потому что он его не видит в компоненте насколько я понимаю
不退転」
если у тебя стейт инициализирован там же где и компонент то будет виден
Dmitry
Eldar
不退転」
不退転」
нету у тебя стейта в компоненте
不退転」
у тебя функциональный компонент
不退転」
передавай в стейт в компонент через пропсы
不退転」
с родителя
Eldar
точняк
Eldar
сейчас попробую, спасибо
不退転」
и не возвращай null в тернарниках в стилях
Никита
Никита
это тоже великолепно
Eldar
不退転」
а как правильно?
либо onPress={() => props.change()} если надо аргументы закинуть
Dmitry
Vitaliy
Dmitry
5.2.2