🦁
так вообще нельзя делать (напрямую работать со стейтом) нужно всегда использовать setState
ну я поэтому и спросил. Оно то вроде работает нормально, никаких warning'ов не вылазит, но я всегда инициализирую массив заранее, и только потом его через setState записываю.
Dmitriy
Ну если классовый компонент, почему бы и не геттеры
А почему не метод? Что ты имеешь ввиду?
Vladimir
А почему не метод? Что ты имеешь ввиду?
get videoBlocks() { return this.state.case.map.... }
🦁
Ну у тебя уже есть setState который грузит первое видео(вне интервала) , сделай там перебор массива
перебор массива уже записанного в стейт? Это получается мне надо использовать setState который принимает функцию? Примерно вот так? Только я ещё не додумал как правильно перебрать)
🦁
а, понял
🦁
Так стоп, а как я могу сделать это в том же setState который грузит первое видео? Ведь на state.videoBlocks[0] будет undefined...
🦁
мб туплю очень, не шарю просто, соре
Alex
что-то и я не пойму логики ваших действий со стейтами, чего вы хотите добиться? сделать прелоад видео? и положить, в стейт, что загрузилось или как?
🦁
нужно чтобы во время preload скрина прогрузились все видео с этого массива и по мере переключения уже были прогружены
Alex
ну так и делайте в таком порядке, проходя по массиву с видео, сохраняйте его в стейт const files = ['video1', 'video2', 'video3']; files.forEach(file => { ...preload file... this.setState(prevState => ({ videos: [...prevState.videos, file] })); });
Dmitriy
get videoBlocks() { return this.state.case.map.... }
Это будет перевычисляется при изменении стейта?
🦁
ну так и делайте в таком порядке, проходя по массиву с видео, сохраняйте его в стейт const files = ['video1', 'video2', 'video3']; files.forEach(file => { ...preload file... this.setState(prevState => ({ videos: [...prevState.videos, file] })); });
Не уверен, что сработало... Сейчас попробую задеплоить, ибо на локалке всё очень быстро грузит и понять сложно. В любом случае спасибо
Vladimir
Это будет перевычисляется при изменении стейта?
Это будет перевычисляться при каждом получении этого свойства. Если стейт менять как положено, то все будет ок
🦁
Только я немного не понял на счёт строчки ...preload file...
Dmitry
а тут случайно никто на egghead не скидывается? там опять вкусный скидос
Dmitry
Ух бля (2)
🦁
Ух бля (2)
ну а тут что не так? Это мой первый опыт в реакт. Я буду рад, если вместо "ух бля" ты просто укажешь на ошибки...
Dmitry
Ну нужно жс поучить. Да и классы уже не в теме
🦁
Ну на ошибки вам базовые туториалы и доки укажут.
А для чего тогда вообще писать "ух бля" или что-то подобное? Чтобы подчеркнуть свою значимость? Мол, "я умный, а ты тупой", не вижу в этом никакой логики, лучше уже тогда ничего не писать. А базовые туториалы и доки я изучил, и то что выше сделал по ним.
Виктор
неа, не всё равно лоадит заранее только первый <video>, может я как-то не так подключаю lazy?
ты можешь узнать это сделав побырому пустой проект с саспенсами
Виктор
локализуй проблему. типо минимальный пример(не в текущем проекте) чтобы понять в чем именно проблема - в твоем коде или в новой технологии которая вроде как еще в альфе
🦁
Как я понял саспенс и lazy тут работают правильно (проверил с другими компонентами в этом же проекте). Надо что-то менять в didmount. Пока не могу понять, что именно.
Виктор
попробуй для начала его убрать и добавлять по частям
🦁
локализуй проблему. типо минимальный пример(не в текущем проекте) чтобы понять в чем именно проблема - в твоем коде или в новой технологии которая вроде как еще в альфе
В моём коде ессесна) Я сам понимаю, что он не идеален, просто нужно понять как заранее подгрузить элементы из массива в didmount. Есть мысль отправить их сразу все в render, только с visibility: hidden, и уже по очереди менять им видимость, но это звучит как костыль
сава
А у меня сраная зима
Igor
Раскидай этот ужас в дидмаунте по функциям небольшим и вызывай функции в дидмаунте. так проще будет продебажить, в чём проблема
🦁
Почему твой код ещё не в песочнице?
Блин, даже не знаю. Сейчас сделаю
Китикет
Красивый код)
Китикет
Интересно, а зачем все эти мутки, можно же просто загрузить все файлы через Promise.all, и убрать после этого состояние загрузки
Китикет
А потом уже вызывать функцию которая логикой настройки показа занимается
Сергей
У кого нибудь была проблема, нужно получить доступ к глобальной переменной после WebPack сборки. К примеру надо получить обьект настроек которые будут меняться, для того чтобы не запускать заного билд проекта. Есть хороший способ сделать так?
Евгений [ : Kyber : ]
Евгений [ : Kyber : ]
Евгений [ : Kyber : ]
Евгений [ : Kyber : ]
Евгений [ : Kyber : ]
всем привет Подскажите пожалуйста, в чем прикол такого эффекта редакс сага может быть? При срабатывании диспатча в компоненте, оно просто циклически начинает обновление. Это именно при обработке call() в саге. Но при этом же оно нормально обрабатывает результат. Но вызов идет циклический
Евгений [ : Kyber : ]
уже пробовал кучу вариантов, результат тот же :( Просто постоянно срабатывает начиная от срабатывания первого диспатча
Евгений [ : Kyber : ]
Заранее извиняюсь за качество видео, старался максимально показать проблему. Задержка такая потому что в компоненте первое срабатывание идет с задержкой
Евгений [ : Kyber : ]
п.с. только учусь, не ругайтесь 😁
Ivan
Можешь более подробный пример привести?
О, мне тоже интересно. Что-то типа переменных окружения, но вычисляемые не во время билда, а в рантайме.
Виктор
от создателей "фотографий кода с телефона"
Евгений [ : Kyber : ]
от создателей "фотографий кода с телефона"
😁 ну код я скринами, а видео просто как показатель циклического срабатывания екшенов. Что они начнают бесится и срабатывать постоянно
Ivan
Ты на каждый экшн информерапдейт запускаешь сагу, которая диспатчит этот же экшен. Который запускает сагу, которая диспатчит экшен, который...
Евгений [ : Kyber : ]
Кстати пришла дурная идея причины... Я же выходит запускаю первый раз диспатч, а потом сама сага его триггерит
Евгений [ : Kyber : ]
о, верняк, как я тоже подумал. Спасибо Выходит сначала диспатч его триггерит, а потом сама сага постоянно.
Евгений [ : Kyber : ]
ага, выходит я первый раз запускаю диспатч в react component, сага его подхватывает, выполняет действие получения данных с API, затем делает диспатч в стор и этот же диспатч опять подхватывает. Спасибо, вчера весь вечер просдел, вот что значит спросить, и помогли и сам смекнул в процессе :) Хорошего всем дня
🦁
Почему твой код ещё не в песочнице?
https://codesandbox.io/s/exciting-hofstadter-w06vm
🦁
Долго потому что не мог вытащить прямой линк на видосы из вк))))
🦁
В общем, lazy подгружает только первый видос, а последующие из массива уже нет
Tasen
в общем всем привет, как заверстать такое?
Tasen
пробовал флексами, но добиться такого результата как на картинке не получилось
¥
React Moscow Meetup 5: HOC, Hooks, Java & React, Huge Apps, MobX vs Redux Jingle bells, друзья! Новый 2020 год и Рождество приходят. А какое Рождество без чудес и сказки? 🙂 Казалось мы бы совсем недавно было 1 июня и мы собирались – более 400 человек на бесплатной конференции React Russia 2019. Хорошие отзывы прилетают до сих пор – кто-то сменил весь подход к разработке, кто-то нашел новый вектор развития, а кто-то даже нашел новых друзей или даже свою вторую половинку. 🙂 С этого момента наш чат в Telegram ( https://t.me/react_js ) вырос до 8700+ человек. Это был великолепный год. Он принёс прекрасный код. Количество проектов, мигрирующих на React.js неуклонно растет, требования к архитектуре приложений возрастают. Микросервисный фронтенд, SSR и CSS-in-JS (в любых реализациях) больше не звучат, как ругательства-надругательства. Уникальность опыта, интеграций и практик нарастает по экспоненте. Чуть больше года прошло с официального релиза React Hooks. Изменилось почти всё. Провожая уходящий год, давайте соберёмся на площадке наших партнеров из Газпромбанк, подведем итоги и пожелаем друг-другу прекрасного 2020 года на большом рождественском React Moscow Meetup. ДАТА И ВРЕМЯ: 11 декабря 2019, 19:00 ГДЕ: Москва, ул. Коровий Вал 5 (ст. Октябрьская, ст. Добрынинская), Газпромбанк. ВНИМАНИЕ! Обязательно возьмите с собой паспорт, чтобы попасть на территорию бизнес-центра. ПРОГРАММА: 19:00-19:10 Socializing, встречаемся, общаемся 19:10-19:20 Вступительное слово от Газпромбанк Зауэрс Дмитрий Владимирович, заместитель председателя правления 19:20-19:30 Welcome talk (Денис Измайлов, Axept) 19:30-20:00 Хоки и хуки (Дмитрий Григоров, Газпромбанк) Вы когда-нибудь сталкивались с дублированием кода в компонентах? Пытались ли вы сделать так, чтобы компонент был комбинируемый и был максимально переиспользуемым другими компонентами? В своем докладе Дмитрий расскажет о некоторых приемах использования компонентов высшего порядка (High Order Components) и сравним их с приемами, которые принесли хуки в "синтаксис" Реакта. Все думают, что одно пришло заменить другое, но на данном докладе мы попытаемся разобраться – действительно ли это так? 20:00 - 20:40 Море проблем: миграция с легаси на React.js! (Олег Коровин, Одноклассники) Доклад про то, как Одноклассники решили начать миграцию со старого стека на Реакт, и какие при этом были трудности, с которыми пришлось справляться. Невероятная история запуска Реакта в мире Java. 20:40 - 21:00 Кофе-брейк, живое общение 21:00 - 21:30 Мы не знаем, кто использует наше приложение (Кир Дергачев, Mos.Ru) Как переписать приложение, которые используется сотней команд, не поломав совместимость – как подготовиться к такому проекту и как не наступить на грабли, на которые наступили в Mos.Ru? Кир также поделится интересными решениями и расскажет, почему тестировщик – лучший друг программиста. 21:30 - 22:00 Почему мы выбрали MobX, а не Redux? ("Назим Гафаров, Mail.Ru Cloud Solutions) Доклад о том, мы отказались от трехлетнего опыта работы с Redux и переключились на MobX. Расскажу, на что смотрели и что повлияло на наш выбор. Кратко пройдемся по основным концепциям MobX и сравним их с реактивностью в Angular.js и Ember.js. 22:00 - 06:00 Afterparty, вопросы-ответы, откровения о наших болях и радости, без камер, записи и журналистов 🙂 УСЛОВИЯ УЧАСТИЯ: 1. Конференция бесплатная, но вход строго по регистрации. Регистрация по ссылке: https://axept.timepad.ru/event/1135941/ 2. Для того, чтобы зарегистрировать – необходимо заполнить форму ниже, отправив таким образом заявку и дождаться приглашения. ОСТАЛИСЬ ВОПРОСЫ? Появились вопросы/предложения или может даже готовы выступить с докладом на следующей конференции-митапе? Пишите срочно events@axept.com или напрямую в Telegram: @DenisIzmaylov И ЕЩЁ: 1. Подписывайтесь на канал конференции, чтобы быть в курсе событий: https://t.me/ReactMoscow 2. Вступайте в Facebook-группу: https://www.facebook.com/groups/ReactRussia
А подтверждение или отказ сколько ждать? Я из другого города собираюсь, хотелось бы знать заранее ехать или нет. Спасибо
Сергей
У кого нибудь была проблема, нужно получить доступ к глобальной переменной после WebPack сборки. К примеру надо получить обьект настроек которые будут меняться, для того чтобы не запускать заного билд проекта. Есть хороший способ сделать так?
К примеру config.js (либо в index.html, либо в webpack подключается) - где храниться обьект настроек (например: { siteName: 'MySite', years: 2020, ...и т.д. }) Этот обьект можно поменять в файле и сохранить, и в местах где импортируются эти значения также меняются, без билда всего проекта.
Dmitriy
https://codesandbox.io/s/exciting-hofstadter-w06vm
С мобилв у меня вообще ниче не загружается.
🦁
хм
Dmitriy
А это с вк) впнки нема смогу вечером глянуть тока
🦁
а бля, я понял
🦁
ну чекни вечером пожалуйста, буду очень благодарен
Китикет
Не пойму зачем тут лейзи
🦁
Не пойму зачем тут лейзи
может я не совсем понимаю, что такое lazy loading. Мне нужно подгрузить все видосы из массива, который в didmount во время преолад скрина. Если тут можно без lazy, то круто.
🦁
Хорошо, спасибо