Alexander
Кто спец в jest? Можете помочь замокать класс?
Alexander
]]]
Alexander
const requests = new Requests({
async: true,
requestAttemptCount: 3,
refreshAttemptCount: 3,
});
requests.makeRequest(async (headers) => {
try {
const response = await client({
...config,
headers: {
access_token: headers.token
}
});
observer.next(response.data);
observer.complete();
} catch (e) {
if (Axios.isCancel(e)) {
observer.error('Cancelled by user');
} else {
observer.error(e);
}
}
});
Alexander
Нужно замокать класс Requests
Aleksei
Ребят, кто знает как работает focus() и blur(), я чет не могу в исходниках найти.
Проблема в чем, у меня есть нативный компонент, который сабкласит RCTBaseTextInputView (то бишь это TextInput) и есть лэйбл через обычный Text, я пытаюсь через реф вызвать focus(), и это работает в первый раз отлично, потом я из нативки кидаю эвент на блюр через
[_eventDispatcher sendTextEventWithType:RCTTextEventTypeBlur
reactTag:self.reactTag
text:self.backedTextInputView.text
key:nil
eventCount:_nativeEventCount];
но при этом повторное нажатие на лейбл ничего не дает.
Я конечно сделал хак через
onBlur={() => this.pickerRef != null && this.pickerRef.blur()}, но выглядит это конечно так себе.
Мои поиски реализации закончились здесь https://github.com/facebook/react-native/blob/5491c3f942430982ce9cb6140ed1733879ed3d1d/Libraries/Renderer/shims/NativeMethodsMixin.js#L19
Aleksei
Пока писал решил проверить одну мыслю, и нашел такое https://github.com/facebook/react-native/blob/5491c3f942430982ce9cb6140ed1733879ed3d1d/Libraries/Components/TextInput/TextInput.js#L1196 . Так что мой хак не такой уж то и хак 🙂
Aleksei
Gena
Я когда сюда скидывал реализацию KeyboardAvoidingView тоже туда в приватное апи залез, т.к. иначе невозможно получить id текущего элемента. И да, там захардкожен штатный TextInput и больше с ним вроде ничего не работает (это не точно, мог забыть уже).
Gena
не, сорри, не в KeyboardAvoidingView... где-то в другом месте... чуть позже напишу
Gena
Там этим пользуется функционал в Libraries/Utilities/dismissKeyboard.js
Andrii
какой самый быстрый навигатор по страницам?
Aynur
rnn по идее
чей ты
Andrii
спасибо больше
invariance
Сделал в общем свою радио кнопку.
Выглядит оно так:
constructor() {
...
this.radioBtn = React.createRef();
}
_getRadioRound = () => {
return <View ref={this.radioBtn}></View>
}
render() {
return (
<View>
...
{this._getRadioRound()}
</View>
);
}
Но какого то хрена у меня все еще undefined object this.radioBtn при попытке получить этот реф. Что я делаю не так то?
invariance
Типо это не считается за то, что я объявил реф до рендера?
Cenator 🐈
invariance
Не, нифига, все та же ошибка
Cenator 🐈
тогда не выноси в метод _getRadioRound
invariance
Та же ошибка =(
invariance
Не работает. Именно radioBtn не находит
чей ты
контекст может потерян
invariance
кстати, а как console.log читать на андроиде? Никак?
Ianis
Ianis
invariance
ну эмулятор, по сути да
invariance
В общем концепт примерно такой:
refContainer = React.createRef();
_onPress() {
alert(this.refContainer.current.toString());
}
render() {
return (
<Button onPress={this._onPress()}>
<View ref={this.refContainer}/>
</Button>
);
}
Возможно проблема в том, что я пытаюсь вызвать реф "снаружи" компонента, где он устанавливается?
Cenator 🐈
invariance
вроде что то получается
invariance
Всем спасибо за помощь, буду дальше пытаться)
Cenator 🐈
invariance
это да, просто для удобства пишу)
invariance
свои тараканы короче
Eugene
У реакт-нативщиков прям какая-то тенденция писать с '_'
invariance
invariance
а от дарта
invariance
Ianis
invariance
это правда, к сожалению
Nikita
Cenator 🐈
Nikita
Nikita
Из доков угадай чего
Cenator 🐈
щас бы просто принимать на веру без какого либо логического объяснения
Nikita
А мы религией занимаемся?
Cenator 🐈
это не я привел пример не самого удачного нейминга лишь потому что он из доки
Александр
дай угадаю, react native?
Nikita
Maxim
в Interactable можно как-то нормально слушать drag, а не только старт или стоп?
Maxim
например как в ScrollView onScroll
Никита
Никита
я в итоге пришел к тому что interactable вещь конечно крутая, но в итоге проще без нее. Много ограничений, все через костыли. Работает в итоге только для задач из примеров красиво
Никита
ну не только конечно, но все же далеко не все на ней делается
Maxim
ну не сильно сложные вещи делаются очень просто, но такие ограничения заставляют грустить
Maxim
а что используешь вместо Interactable?
Stanislav
Ребят, кто-то смог как-то решить проблему с перформансом FLatList и SectionList, когда мы имеем лист больше 1000 сложных айтемов ?
Пробовал уже использовать либы типа RecyclerView и react-native-tableview, но они лист все-равно не был такой же плавный как на нативном приложении.
Также использовал различный props для листов, которые должны тоже помочь с производительностью, но опять же ничего(example: updateCellsBatchingPeriod, initialNumToRender etc.)
Кто как решал эту проблему ?
Никита
если к ней не привязываться то оказывается многие вещи проще делать на panResponder или gesture handler
насчет проблемы - есть вроде что-то типо addListener для animated, но я не использовал. Костыль но я других вариантов не видел
Никита
но тащить interactable из-за свайплиста достаточно сильно. Его любыми средствами легко написать, плюс есть какая-то незадокументированная реализация прямо в рн (вероятно даже нативная), плюс куча простых, куда более легковесных либ
Maxim
Maxim
Stas
react-native-git-upgrade добавляет дупликаты файлов и библиотек с разными id-и в проектые ios файлы.
Stas
Stas
это не ломает сборку, но некоторых уже по 3-4. это кае-нибудь лечится?
Maxim
Artem
Как в RN правильно править css на лету? Например с Реактом чистым в браузере все понятно - открыл консоль разработчика и играешься со стилями как хочешь, а здесь как быть, как делать пиксель перфект?
Unknown number
Никита
в похожей задаче не нравится требование snapPoint. Хочется иметь возможность остановить в любой позиции
в этой задаче нужно чтобы контент внутри скролился, но при достижении границы чтобы начиналось движение interactable. Я не разобрался как это сделать более менее нормально, пока задача не решена
Artem
ну т е react-native-debugger это самый лучший вариант получается? ( там ведь только просмотр
Наталья
можно заходить в стили и менять стили сразу
Наталья
Unknown number