Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
вопрос на лям, вот у меня есть компонент <Feed/>, в нем рендерится <Post/> из стора редакса, на Post-e есть кнопка, которая умпешно удаляет пост из стора, однако Фид при этом не обновляется, если сам в ручную не перейду на другой экран и не вернусь обратно в Фид изменения не показываются, как с этим бороться?
Dmitry
встречал такой подход - по умалчанию юзать PureComponent (в целях оптимизации), при необходимости писать shouldComponentUpdate (если более глубокое сравнение нужно)
В моем представлении изначально не должно быть такого. Я стараюсь вообще избегать подобных конструкций и строить правильную архитектуру
Dmitry
Если тебя какой-то компоненте ререндериться лишний раз, то стоит разобраться почему
Dmitry
Лишние пропсы летят или анонимные функции прикидываются и так далее
Dmitry
Нельзя уповать на то, что я щас подключу PureComponent и все станет «зебест»
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
Нужен код
Ща докурю кину
Dmitry
Ща докурю кину
А что за навигатор?
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
А что за навигатор?
Без навигатора, играюсь со стейтом
Dmitry
Без навигатора, играюсь со стейтом
Ты пишешь что по экранам переходишь
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
Уровня switch(this.props.screen){ case "feed": return <Feed/>
Dmitry
Ну показывай)
Gena
Как меняется state.blocks?
Gena
Сама ссылка?
Gena
Ща, как бы это залоггировать
Gena
Вот так, перед return <FlatList...:
Gena
const isChanged = global.prevBlocks !== this.state.blocks console.log(`Container for FlatList render, blocks ${ isChanged ? 'changed' : 'unchanged' }`) global.prevBlocks = this.state.blocks
Gena
Только уберите этот хак потом из кода обязательно... не надо в продакшн такого делать )
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
Ну показывай)
https://pastebin.com/LiTA1gLS Хочу заметить еще раз, что сам обьект из массива удаляется, но вот фид не обновляется, а при любом другом экшне обновляется
Gena
Так вы сможете узнать почему ререндер внутренностей FlatList происходит. Если перед ререндером пишет blocks changed, значит вы поменяли данные
Gena
Если blocks unchanged - значит что-то не то с FlatList
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
https://pastebin.com/LiTA1gLS Хочу заметить еще раз, что сам обьект из массива удаляется, но вот фид не обновляется, а при любом другом экшне обновляется
алсо там в пост.жс-е схожая проблема была с лайками, это кастылем пофиксил, но когда второй раз проблема всплыла подумал что есть метод получше кастылей
Gena
Кстати, конечно потеряется, но я ещё интересный пост у этого Parashuram нашел: http://blog.nparashuram.com/2018/11/react-native-performance-playbook-part-i.html
Gena
Это значит, что вы сами каждый раз в FlatList передаете новые данные, вот он их и перерендеривает
Dmitry
https://facebook.github.io/react-native/docs/flatlist.html
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
я щас прочитал на стаковерфлоу что возможная причина моей проблемы в том, что я мутирую стейт, однако я еще не додумался до метода, который не будет мутировать стейт и удалять из массива обьект, подскажите плз
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
case types.DELETE_POST: let post = state.posts return { ...state, posts: post.splice(action.id, 1) }; все
Anonymous
return { ...state, posts: state.posts.filter((item) => item.id !== action.id) }
Aynur
в смысле? отобразить поверх?
Cenator 🐈
кто каким образом накатывает android sdk и все необходимое для сборки на CI? нагуглил это, оно заведется без дополнительных манипуляций? https://github.com/thyrlian/AndroidSDK
Anonymous
да, нужно ниже корневого навигатора положить этот компонент
Cenator 🐈
Aynur
там вроде как тоже докер собирает, или это всё же другое?
Cenator 🐈
ну там наверное специфично для гит лаба, у меня гит хаб
Aynur
https://www.pastiebin.com/5c40bb33d2133 может поможет чем
Eugene
🤔
Gena
Или своё такое написать, что надежней...
Gena
Но. Я бы не советовал делать никаких преждевременных оптимизаций
Ильдар
Ребят, подскажите, делаю приложение через Expo. Нужно из файла csv грузить данные. Не очень понимаю механизм, как тут все работает. Пытался через react-native-fs: var RNFS = require('react-native-fs'); ошибку выдает undefined is not an object (evaluating 'a.RNFSFileTypeRegular') Пытаюсь через Expo.FileSystem var fileUri = FileSystem.documentDirectory var dir = FileSystem.readDirectoryAsync(fileUri) console.log(dir) Выдает непонятно что {_40:0,_65:0,_55:null,_72:null} Подскажите как файлы подключать?
Ильдар
Да, точно, получилось через FileSystem. Спасибо 🙏🏻
Дмитрий
Какие хорошие, проверенные ui kit’ы можете посоветовать?
Дмитрий
@quarrant а случайно nativebase не тяжеловат будет?
Олександр
ппл нужна помощь в React есть такое понятие props.children если такое в React Native?
Dmitry
@quarrant а случайно nativebase не тяжеловат будет?
ну я уже давно kit стараюсь не использовать, проще самому описать компоненты
Олександр
да
спс
Никита
никто не в курсе с чем связано может быть? кликаю вверху, а прожимается кнопка внизу. Проявляется не только на хедере, просто там проще всего
Никита
touchables в toggleInspector
Никита
тут почти весь экран в кликабельных областях, но каждый элемент строго своего размера, точно не на весь экран причем если чуть подскролить то прожиматься уже будет следующий элемент
Никита
у меня точно это было, но не помню с чем связано и как фиксил
Ianis
Нужна помощь. У react-navigation есть свойcтво isFocused. В каком месте можно делать проверку этого свойства кроме render() {}
Ianis
componentDidUpdate
Спасибо
Vitaly
Спасибо
не за что )
Mike
Парни, может не в кассу вопрос, но может кто знает. Нужен курс по свифту хороший, для человека, который вообще не прогал никогда
Artem
использую react-navigation. Задаю заголовку цвет. Но выглядит это странно - заливается и верхняя информационная часть, в итоге ее не видно. Как это побороть?
Stas
кто-нибудь юзал ram bundle? ловлю это https://github.com/facebook/react-native/issues/19478 все делал по доке в https://facebook.github.io/react-native/docs/performance
Stas
0.57.8
Artem
StatusBar.setBarStyle('light-content', true);
Это просто где-нибудь в корне приложения установить верно ?
Eduard
нет, скорее всего в дидмаунте где эта страница
Andrei
udemi хорошие курсы
Andrei
на английском
Nikita
а можно как то делегировать события в реакт нейтиве? нужно внутри TouchableWithoutFeedback узнать на какой элемент нажали вижу что можно получить node id в event.target, но как его сопоставить с реальным компонентом - пока не понимаю :С
Vladimir
используй protected renderLoadingState(id) { return ( … ); }
Vladimir
далее в пропсе onPress={this.renderLoadingState(id)}
Taras
как растянуть картинку, постоянно остаются отступления которые убрать не могу
Taras
Taras