Anonymous
Спасибо за то что поговорили со мной, время потратили, но похоже все куда то впустую
Ivan
Спасибо за то что поговорили со мной, время потратили, но похоже все куда то впустую
Погодите, подождите. А разве отсутсвие вызова сайд-эффекта — не ФП?
Anonymous
Погодите, подождите. А разве отсутсвие вызова сайд-эффекта — не ФП?
Мне надо проветриться пойти, давайте заканчивать, то что вы декларативно пишите 1. Вызвать лифт 2. Ждать событие лифт приехал 3. Зайти в него 4. Нажать кпопку ``` Это совершенно не значит что parse execute этого не будет содержать сайд эффекты, просто вызывать их будет кто-то в кишках этого процесса
Anonymous
Погодите, подождите. А разве отсутсвие вызова сайд-эффекта — не ФП?
В хаскеле это IO, вы можете обернуть все это тысячей слоёв абстракций, в конечном итоге у вас будет функция сделатьХорошо() и тип у неё будет () -> IO, потому что вы не можете просто так взять и выкинуть сайд эффект или куда то его спрятать
Anonymous
А код на Хаскеле будет преобразовываться в инструкции процессору и в конечно счете выполняться перекладыванием битов. Значит хаскель-то не ФП!
А причем тут это? Кстати, любое перекладывание байтов (биты отдельно не хотят) и i/o можно спокойно описать функциями и монадами, но оно вам надо?
Serhii
Доброй ночи, ребята кто сможет обьяснить почему этот код повторно не вызывается useEffect(() => { (async () => { try { dispatch({ type: 'FETCH_INIT' }); const admins = await fetch(adminsUrl, 'GET'); dispatch({ type: 'FETCH_SUCCESS', payload: admins }); } catch (error) { dispatch({ type: 'FETCH_FAILURE', message: error.message }); } })(); }, []); Те он вызывается при рендере, потом я ловлю к примеру ошибку и вызываю снова reducer, который по идее обновляет стейт и соответственно должен запустить useEffect снова
Alexey
В скобках, после колбека от useState, необходимо поместить что - то, что будет меняться.
Alexey
Можно ваш admins.
Alexey
Пустой массив ознaчает применение один раз, если я правильно читал документацию. :))
Eugen
Ребята, привет все, Подскажите плиз либу для древовидной структуры (построения дерева айтомов)?
Alexey
react - dnd смотрели? Там есть библиотека react - tree и много других полезных. :)
Serhii
@Alexnorvag я использую useReducer
Serhii
я правильно понимаю, useEffect вызывается при рендере и если передан второй аргумент и он изменился?
Alexey
@svatz , ну смотрите, если переводить на классы, то useEffect - это аналог componentDidMount, componentDidUnmount и componentDidUpdate. Когда вы пишите без массива в конце, то у вас работает просто componentDidMount, когда указываете массив в конце, то уже как componentDidMount и componentDidUpdate. А если эффект возвращает что - либо, то ко всему этому ещё и componentDidUnmount.
Serhii
у меня вываливается ошибка которую я ловлю и мне нужно весь процесс повторить, те с начальным стейтом, снова попытаться вытащить данные
Alexey
Если у вас пустой массив, то вам не с чем сравнивать, соответсвенно ваш componentDidMount выполняется только один раз. Если в массиве указать зависимость от состояния, то сможете запускать заново. :)
Alexey
@Tchernyavsky не совсем) Там и апдейт присутствует
Serhii
смотрите, я указал зависимость isLoading, и оно погнало в рекурсию)
Daniil
@Tchernyavsky не совсем) Там и апдейт присутствует
при пустых зависимостях, когда же он сработает?
Alexey
при пустых зависимостях, когда же он сработает?
Вот именно, что идет сравнение. Так как не с чем сравнивать, то она и не обновляется. :)
Serhii
соответственно если я укажу в зависимость data, то по идее он опять же не обновится потому что дата не пришла, я отлавливаю ошибку
Alexey
а я что говорю? CDM обновляется?)
Ладно - ладно, я просто рассказываю как в документации. :)) Если не вставлять пустой массив, то будет работать только ка componentDidMount. А так ещё и componentDidUpdate. ;/
Alexey
@svatz вы можете указать несколько зависимостей. Например, добавьте ошибку, которую словили.
Serhii
@Alexnorvag их через запятую можно добавлять?
Alexey
Да, как элементы массива.
Daniil
[deep1, deep2]
Serhii
блин, просто рекурсия и все
Alexey
А может есть у кого хорошая реализация filereader-a? И вообще, шарит кто - нить, нужны ли промисы для чтения или можно обойтись?
Alexey
@svatz код большой? Просто если есть возможность весь увидеть, то было бы лучше. :) В виде ссылочки, конечно. :D
Serhii
@Alexnorvag нет, там строчек 70 растянутых) ща на гист загружу
Alexey
@svatz окей, я просто сам с похожей темой сижу, будет интересно решить вопрос. :)
Serhii
https://gist.github.com/nodesvatz/cddd07f43cc952da0bbb968df87638f8
Serhii
@Alexnorvag я только сегодня познакомился с useReducer, и вообще на реакте пишу редко, так что не осуждайте)
Serhii
возможно я саму концепцию не уловил
Alexey
@svatz да всё отлично, попробуйте вообще убрать массив. Должно сработать. У вас меняется стэйт, а это уже предпосылка каждый раз вызывать эффект.
Alexey
Вообще, можно в консоли увидеть варнинг. В нём будет вся информация, что желательно добавить. :)
Serhii
убрал массив и снова рекурсия)
Alexey
Убрали вообще? И скобки?
Serhii
useEffect(() => { (async () => { try { dispatch({ type: 'FETCH_INIT' }); const admins = await fetch(adminsUrl, 'GET'); dispatch({ type: 'FETCH_SUCCESS', payload: admins }); } catch (error) { dispatch({ type: 'FETCH_FAILURE', message: error.message }); } })(); });
Alexey
А в консоли просто из - за рекурсии ошибка? Или есть ещё что - то?
Serhii
не, реакт ни на что не ругается, просто рекурсия валит бесконечная)
Serhii
в принципе это очевидно, мой стейт постоянно меняется и вызывается useEffect который в свою очеред тоже стейт меняет, может цепочку этих диспатчей вообще вынести в отдельную функцию и вызывать ее в момент когда модальное окно всплывает
Alexey
А если закомментить вот это? dispatch({ type: 'FETCH_SUCCESS', payload: admins Будет рекурсия? Мне кажется в этом вызове ошибка.
Serhii
да, все равно, но я по всей видимости нашел беду и исправил, но не уверен на сколько это окей, один раз вызывать в useEffect всю эту логику, а потом в случае если модалка всплыла, вызывать в отдельной функции это дело снова
Alexey
А у вас по открытию модального нужно вызывать fetch? А не, понял. И при инициализации.
Serhii
да, типа это хендлинг ошибки, открывается модалка, а мы можем повторить реквест или не повторять
Alexey
да, типа это хендлинг ошибки, открывается модалка, а мы можем повторить реквест или не повторять
В ну в таком случае и не нужно вообще useEffect, У вас всё будет вызываться отсюда const handleModal = (isRetryRequest) => { if (isRetryRequest) dispatch({ type: 'FETCH_INIT' }); };
Serhii
а первый fetch при загрузке страницы где лучше сделать?
Alexey
@svatz а, ну всё, сорян, я просто подумал, что нужно только когда хэндл срабатывает. :)
Serhii
@Alexnorvag да, вроде работает) спасибо что уделил время, я бы сам не осознал как эти штуки срабатывают)
Alexey
@svatz ахахаха, да не за что. В прямом смысле выражения. ;D
Serhii
та не, ты подтолкнул меня на некие размышления) я бы сам еще пол ночи ковырялся
Alexey
ахаха. Ну ладно. XD
倫太郎
@Atassis
Георгий
useEffect(() => { (async () => { try { dispatch({ type: 'FETCH_INIT' }); const admins = await fetch(adminsUrl, 'GET'); dispatch({ type: 'FETCH_SUCCESS', payload: admins }); } catch (error) { dispatch({ type: 'FETCH_FAILURE', message: error.message }); } })(); });
У useEffect есть второй параметр, какие переменные отслеживать. Если там указать [], то useEffect сработает один раз только. Иначе он будет срабатывать каждый раз при апдейте
NCR
Товарищи фронтендеры, работает же кто-нибудь на большом проекте под виндой? Как ваша производительность в NTFS с маленькими файлами? Хотелось бы знать ваш опыт в бусте: юзаете ли вы виртуальную машину, или просто девелопите в облаке...
Alexey
Кто выписывает баны? Пожалуйста обратите внимание на то, как здесь принижают честь и достоинство фронтендеров. Я, как начинающий фронтер просто негодую. 🤬
Alexey
Почему сразу так? Вы, молодой человек, гомофоб?
Ахахха. Нет. Но и гендера я своего не менял. Надеюсь, что когда стану уже полноценным фронтендером, то не придётся менять. 😩
Nikita
Ребята не работает фича на ios, можно кого нибудь попросить продебажить? Нет возможности. Нужно просто узнать где ошибка
Alexey
@nikitapilgrim , может, лучше у нативщиков спросить? Это другой канал.
Nikita
кстати да, спасибо. Не подскажешь канал?
Alexey
кстати да, спасибо. Не подскажешь канал?
Всегда пожалуйста. @reactnative_ru
Demuz
Привет всем. Видел componentWillReact в нескольких проектах, но он практически не гуглится. Подскажите, оно вобще сейчас существует? Или это было в каких-то старых версиях mobx и т.п.?
Volodymyr
Линкцется с каким то депенденси ??
Demuz
На медиуме говорят типа это добавлялось в жизненный цикл react, если вы оборачиваете его в observer и используете в нем mobx.
Volodymyr
Значит ответ на твой вопрос - это использует MobX , буду капитаном
Demuz
Demuz
https://medium.com/@fabledva/%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8-%D0%BF%D0%BE-mobx-js-%D1%87%D0%B0%D1%81%D1%82%D1%8C-%D0%BF%D0%B5%D1%80%D0%B2%D0%B0%D1%8F-8c2481fd3505
Demuz
Значит ответ на твой вопрос - это использует MobX , буду капитаном
Не понятно почему оно как-то секретно гуглится и об этом не содержится никакого описания ни в mobx, ни в mobx-react, но работает.