Size: a a a

React Native — русскоговорящее сообщество

2020 June 07

VO

Vitalii Obideiko [Ob... in React Native — русскоговорящее сообщество
Steve
Единственный момент, мне нужен не флэтлист, а SectionList. По секциям я разбиваю в зависимости от данных пришедших из апи, из апи возвращается массив, всю логику с нормализацией, фильтрацией по дате( для секций) где лучше всего выполнять?
селектор. Посмотрите reselect npm.
Для этого подхода все равно флет лист или секшин лист
источник

S

Steve in React Native — русскоговорящее сообщество
Vitalii Obideiko [Obidos]
селектор. Посмотрите reselect npm.
Для этого подхода все равно флет лист или секшин лист
Ага, да как раз его и смотрел, но где его лучше всего хранить? В файле редакса прям? Или в самой компоненте где это нужно?
источник

VO

Vitalii Obideiko [Ob... in React Native — русскоговорящее сообщество
Steve
Ага, да как раз его и смотрел, но где его лучше всего хранить? В файле редакса прям? Или в самой компоненте где это нужно?
это вопрос организации структуры проекта. Я храню в  отдельном файле, который имеет селеуторы конкретных данных
источник

B

Bessarab in React Native — русскоговорящее сообщество
Всем привет
источник

B

Bessarab in React Native — русскоговорящее сообщество
Хочу написать игру на rn + ts, на подобии дурака, посоветуйте что почитать/посмотреть/послушать
источник

МК

Миша Ковальчук... in React Native — русскоговорящее сообщество
всем привет. А почему не срабатывает onLayout?
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Миша Ковальчук
всем привет. А почему не срабатывает onLayout?
По чему угодно... слишком много входных условий вы не описали... К примеру откуда мне знать, что это именно Text импортированный из RN? Откуда понять какая платформа? Какие стили? Слишком много если...
Возможно, к примеру, что это текст внутри текста...
- https://stackoverflow.com/q/50934786
- https://github.com/facebook/react-native/issues/19785
источник

МК

Миша Ковальчук... in React Native — русскоговорящее сообщество
Gena Black
По чему угодно... слишком много входных условий вы не описали... К примеру откуда мне знать, что это именно Text импортированный из RN? Откуда понять какая платформа? Какие стили? Слишком много если...
Возможно, к примеру, что это текст внутри текста...
- https://stackoverflow.com/q/50934786
- https://github.com/facebook/react-native/issues/19785
стили закомментировал, чтобы было проще, платформа андройд, Text из rn. Функцию visibleLastMessage вызываю в return'е функционального компонента
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Миша Ковальчук
стили закомментировал, чтобы было проще, платформа андройд, Text из rn. Функцию visibleLastMessage вызываю в return'е функционального компонента
Насколько я вижу, ваша ф-ция onLayout не вызывается потому что никогда не маунтится реальный элемент с этим коллбэком потому, что никогда ф-ция visibleLastMessage не возвращает элемент потому, что условие lastMessageWidth!==0 && lastMessageWidth/windowWidth <= 0.3 никогда не становится истинным потому, что  второй компонент логической операции И на первой итерации выглядит как
lastMessageWidth / windowWidth <= 0.3 -> windowWidth / windowWidth <= 0.3 -> 1 <= 0.3 -> false.
А сам lastMessageWidth может поменяться только если хоть один раз отработает onLayout, а он никогда не отпработает, потому что см выше
источник

МК

Миша Ковальчук... in React Native — русскоговорящее сообщество
Gena Black
Насколько я вижу, ваша ф-ция onLayout не вызывается потому что никогда не маунтится реальный элемент с этим коллбэком потому, что никогда ф-ция visibleLastMessage не возвращает элемент потому, что условие lastMessageWidth!==0 && lastMessageWidth/windowWidth <= 0.3 никогда не становится истинным потому, что  второй компонент логической операции И на первой итерации выглядит как
lastMessageWidth / windowWidth <= 0.3 -> windowWidth / windowWidth <= 0.3 -> 1 <= 0.3 -> false.
А сам lastMessageWidth может поменяться только если хоть один раз отработает onLayout, а он никогда не отпработает, потому что см выше
не понимаю, а от куда "windowWidth / windowWidth" ?
источник

МК

Миша Ковальчук... in React Native — русскоговорящее сообщество
Миша Ковальчук
не понимаю, а от куда "windowWidth / windowWidth" ?
у меня же этого нету
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Миша Ковальчук
у меня же этого нету
А, пардон... ща
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Инициализацию в 0 пропустил (подумал что вы инициализируете в windowWidth, иначе первая часть условия бессмысленна), так что итог в силе, просто условие по первой части отсекается и всё... больше никогда не сработает
источник

МК

Миша Ковальчук... in React Native — русскоговорящее сообщество
Gena Black
Инициализацию в 0 пропустил (подумал что вы инициализируете в windowWidth, иначе первая часть условия бессмысленна), так что итог в силе, просто условие по первой части отсекается и всё... больше никогда не сработает
т.е получается надо чтобы Text сначала замаунтился, хотя бы раз, и потом уже сработает onLayout?
Уже столько сижу с этой задачей)
Может вы подкинете идейку как лучше сделать, может я не в ту сторону пошел. Нужно что бы как на картинке, если строка не помещается в "экран", то показать в определнном месте троеточие(как в телеграме). Я пытался вычислить длину этой строки в пикселях, и с использованием ширины экрана в пикселях, сделать так, чтобы эта строка была, например, не больше половины всей ширины экрана. Есть вариант вычислить длину этой строки, зная шрифт, но тоже не совсем понятно, с этим вариантом.
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Миша Ковальчук
т.е получается надо чтобы Text сначала замаунтился, хотя бы раз, и потом уже сработает onLayout?
Уже столько сижу с этой задачей)
Может вы подкинете идейку как лучше сделать, может я не в ту сторону пошел. Нужно что бы как на картинке, если строка не помещается в "экран", то показать в определнном месте троеточие(как в телеграме). Я пытался вычислить длину этой строки в пикселях, и с использованием ширины экрана в пикселях, сделать так, чтобы эта строка была, например, не больше половины всей ширины экрана. Есть вариант вычислить длину этой строки, зная шрифт, но тоже не совсем понятно, с этим вариантом.
Да, onLayout сработает только после инстанцирования компонента, после реального лэйаута в yoga
источник

AN

Andrei Nikitin in React Native — русскоговорящее сообщество
@m_s_kov если я правильно тебя понял то троеточие ставится через text-elipsis (во всяком случае в вебе). посмотри в этом направлении
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Миша Ковальчук
т.е получается надо чтобы Text сначала замаунтился, хотя бы раз, и потом уже сработает onLayout?
Уже столько сижу с этой задачей)
Может вы подкинете идейку как лучше сделать, может я не в ту сторону пошел. Нужно что бы как на картинке, если строка не помещается в "экран", то показать в определнном месте троеточие(как в телеграме). Я пытался вычислить длину этой строки в пикселях, и с использованием ширины экрана в пикселях, сделать так, чтобы эта строка была, например, не больше половины всей ширины экрана. Есть вариант вычислить длину этой строки, зная шрифт, но тоже не совсем понятно, с этим вариантом.
А что касается решения, то да, Андрей правильно советует. В RN самому лезть в текстовый лэйаут - гиблое дело, единственный, имхо, шанс - воспользоваться ограничителем numberOfLines и ellipsizeMode )
источник

МК

Миша Ковальчук... in React Native — русскоговорящее сообщество
спасибо большое, попробую
источник

GB

Gena Black in React Native — русскоговорящее сообщество
источник

МК

Миша Ковальчук... in React Native — русскоговорящее сообщество
спасибо
источник