Eugene
в офисе прицепил к 24 и норм
Yura
15 тоже мало
Ну так больше нет, а моник в дорогу не варик)
Demuz
вот нашли где пофлудить
Не совсем же не потеме говорим. А то так можно группу назвать FAQ по RN и все. Типа только вопросы приветствуются и ни ни...
Demuz
Ну мне нормально отвечают. Даже вас взять. Ваш посоветованный в свое время RN interactable уже в проде юзается. Классная вещь. Не понимаю как они такой быстрой отрисовки добились. Даже в дебаг версии.
Несколько сложных interactable Объектов сделал на скрине, верней, они всегда там стоят, для скорости отрисовки, со всякими списками, несколькими иттерациями и сортами в сортах, в таком духе, и выдвижение и анимаци обекта один фиг нереально быстро отривавывается, , вобще не понимаю как такого добились, но класно.
Gena
Несколько сложных interactable Объектов сделал на скрине, верней, они всегда там стоят, для скорости отрисовки, со всякими списками, несколькими иттерациями и сортами в сортах, в таком духе, и выдвижение и анимаци обекта один фиг нереально быстро отривавывается, , вобще не понимаю как такого добились, но класно.
Заинтересовался, посмотрел (только ios часть, я в ней быстрей ориентируюсь). Ответ - никак не добились они скорости. Это штатный путь RN реализации хендлинга тачей через чистый JS всё ему тормозит... Ребята просто использовали везде нативный функционал, а через медленный асинхронный канал связи с JS вывели только минимально необходимое, вот и всё... и вернули в свои вьюхи настоящую нативную скорость )
Gena
Они, кстати, майнтейнера ищут 😕
Gena
Кто делал что-то типа такого (вторая гифка)? https://github.com/bryankeller/BLKFlexibleHeightBar
Нормально с чистым js получилось или подводные камни какие? Что служило триггером на увеличение высоты верхнего бара?
Gena
Использовали ли SafeAreaView при этом?
Aleksei
Aleksei
Gena
Aleksandr
Всем привет) кто нибудь делал смену темы со светлой на темную в приле?
Миша
Gena
Я хочу сперва поэкспериментировать с той же техникой, что в нативном https://github.com/bryankeller/BLKFlexibleHeightBar, т.е. вытащить заголовок из ScrollView... если всё получится - отпишусь... пока опасаюсь, что контент в ScrollView будет дергаться при ресайзе...
John
В чат кто-то скидывал ссылку на реализацию подобной анимации в реакте. Если кто-нибудь сохранил был бы благодарен за ссылку.
John
Хотя на что я надеюсь в выходной 😂😂
Eugene
прям пародия на полиглот
Demuz
Видели? Класно сделали.
https://apetools.webprofusion.com/app/#/tools/imagegorilla
zamir
ребят, нужна помощь)
хотел использовать эту библиотеку
github.com/NadiKuts/react-native-pull-refresh вместе с https://github.com/Flipkart/recyclerlistview
В итоге произошла пролема: когда я передаю RecyclerList в PullRefresh, рендерится только один итем, хотя в сам лист содержит 100 итемов7 Как решить такую проблему?
George
Anonymous
George
Ну лучше в RN уже никто не справится, FlatList как раз и сделан чтобы рендерить большое количество данных 🙂
Миша
George
Вообще вопрос изначально был про pull-to-refresh
George
А по поводу вылетов - возможно есть что-то в корне неверное в UX где пользователю предлагают скроллить 6000 items
zamir
George
Хм, FlatList по идее сам определит когда нужные рисовать, если ему сразу дать 6000
Vladimir
zamir
ᛖᚹᛋᛁᚱ
Здравствуйте вновь 🙂 Кто то сталкивался с проблемой, что при первом запуске редукс не обновляет свой стейт ?
Т.е. Есть экран который отображает сохраненные записи с AsyncStorage, при первом запуске приложения если сохранить запись, то этот кран не обновляется, хотя при последующем запуске приложения экран обновляется при каждом добавлении записи
ᛖᚹᛋᛁᚱ
код елементарный
case actionTypes.SAVE_ITEM_TAB_SAVED:
return {...state, data: [...state.data, action.payload.item]}
ᛖᚹᛋᛁᚱ
saveItemToDb: (item) => {
return (dispatch) => {
saveItemToDatabase(item)
.then(value => {
console.log(value)
dispatch({type: actionTypes.SAVE_ITEM_TAB_SAVED, payload: { item: value }})
}).catch(error => console.log(error))
}}
Vladimir
В смысле у вас console.log(value) вызывается, а экран не обновляется?
Vladimir
componentWillReceiveProps вызывается?
ᛖᚹᛋᛁᚱ
вызывается
ᛖᚹᛋᛁᚱ
componentWillReceiveProps(nextProps) {
if (this.props.data.length != nextProps.data.length) this.forceUpdate()
}
ᛖᚹᛋᛁᚱ
но это вызывает только ошибку null is not an object
ᛖᚹᛋᛁᚱ
да лог вызывается
Vladimir
Так не проверяйте длину, если data null
akasybe
Задай initialState
Vladimir
akasybe
или defaultProps
ᛖᚹᛋᛁᚱ
componentWillReceiveProps(nextProps) {
if (nextProps.data != null) {
if (this.props.data.length != nextProps.data.length) this.forceUpdate()
}
}
ᛖᚹᛋᛁᚱ
ничего не изменило
Vladimir
Так не в nextProps дело
ᛖᚹᛋᛁᚱ
вот редакса инитиал стейт
ᛖᚹᛋᛁᚱ
const initialStateTabSaved = {
data: []
}
Vladimir
У вас изначально данных нет
Vladimir
ᛖᚹᛋᛁᚱ
export const reducersTabSaved = (state = initialStateTabSaved, action)
Vladimir
Если у вас null, значит вы data где-то обнуляете, чудес не бывает
ᛖᚹᛋᛁᚱ
Если у вас null, значит вы data где-то обнуляете, чудес не бывает
case actionTypes.RELOAD_DATA_TAB_SAVED:
return {...state, data: action.payload.data}
break
case actionTypes.SAVE_ITEM_TAB_SAVED:
return {...state, data: [...state.data, action.payload.item]}
break
case actionTypes.DELETE_ITEM_TAB_SAVED:
return {...state, data: action.payload.data}
break
ᛖᚹᛋᛁᚱ
это все что в редюсере
ᛖᚹᛋᛁᚱ
кроме дефаул
ᛖᚹᛋᛁᚱ
Единственное что меня смущает
ᛖᚹᛋᛁᚱ
[TypeError: Object is null or undefined]
line: 1090,
column: 59,
ᛖᚹᛋᛁᚱ
появляется при первом сохранении
ᛖᚹᛋᛁᚱ
после перезапуска все работает как нужно
akasybe
так может воткнешь редакс логгер и посмотришь какой стейт после какждого действия?
ᛖᚹᛋᛁᚱ
но ссылается оно, для меня, не понятно на что
ᛖᚹᛋᛁᚱ
ᛖᚹᛋᛁᚱ
ᛖᚹᛋᛁᚱ
как то так
ᛖᚹᛋᛁᚱ
проблема в том, что данный редюсер не инициализирует данные своего стейта
ᛖᚹᛋᛁᚱ
по какой-то причине
ᛖᚹᛋᛁᚱ
если сохранить - удалить - сохранить
ᛖᚹᛋᛁᚱ
стейт инициализируется и все начинает работать как нужно
ᛖᚹᛋᛁᚱ
может кто прочитает и подскажет, кину код самого создания стора 🙂
ᛖᚹᛋᛁᚱ
const rootReducer = combineReducers({
reducersExploreTab,
reducersMainContainer,
reducersTabSaved,
})
export function configureStore() {
const store = createStore(rootReducer, applyMiddleware(thunk, logger))
return store
}