Aetae, Вы правы. Что-то я увлекся...глючит меня ..., хуки срабатывают в одно и тоже время :|
Самый оптимальный вариант - не рендерить компонент пока данные не прийдут :|, обидно что нет возможно получить данные перед - рендером всего приложения, это было бы полезно.
Понимаю когда в componenDidMount пихают запрос в классовых компонентах - там это будет наилучшим решением для реализации запросов, но зачем они пихают в useEffect в функциональном?
"Потому что компоненты никого сами по себе не ждут и рендерятся синхронно, т.е. "прямо сейчас", а ответ от сервера приходит асинхронно, т.е. "когда-нибудь потом". Более того, хук useEffect сам по себе только запускается уже после рендера. "
В чем тогда вся соль ? Почему все пихают запросы на получение данных в хук?
Проще в компоненте первой же функцией написать запрос на получение данных и не париться? Если работадатель увидит что запрос не в хуке, подумает плохо?
Спасибо конечно , но меня больше напрягает то что когда загружается компонент , загружается первый консоль лог - с тем то что todos - undefined, после этого же , срабатывает хук useEffect который вызывает функцию на получение данных и после этого компонент по новой рендериться и вызывает консоль лог уже с полученными данными. Так вот в чем собственно проблема , когда срабатывает первый консоль лог - компонент дочерний в который отправляются todos со стейте - выдает ошибку - это проблема решаема на изи. Но тут еше 1 проблема, когда я решаю проблему с этим undefined, пишу проверку или делаю по дефолту в стейте пустой массив - это всё занимает время , и в получается - просто медленная подгрузка данных из api . Толи с хуком что-то не то, и либо вообще его не стоит мне использовать , либо у меня руки кривые и я делаю что-то не то.
Не помогло, так же дочерний компонент срабатывает быстрее. Я вижу много вариантов решений но они все костыльные... :D. Может быть логику по CRUD перенесу в сам компонент TodoList в котором и отрисовываю TodoItem проходясь по массиву данных методом map,как думаете?
В любом случае , надо попрактиковать , и вникнуть, начать изучать, прочувствовать это всё , и сам придумаю возможности для решения этой проблемы, но всё равно всем спасибо за дополнительную информацию, помогли.
За эту инфу спасибо конечно же, интересно. А вот к примеру есть форма регистрации, и есть кнопка у этой формы , которая собирает данные формы и отправляет запросов в бд , это событие клика можно переписать в devtools или что такого быть не может? то есть отправить не только данные из формы но и еще какой-либо код и т.д , да всё что угодно, вот в этом думаю вся суть моего вопроса
Совсем не рендерить приложение , пока данные не прийдут.
Пока я сделал вот так
Спасибо в любом случае вам , что помогаете людям.