Контакты

Наибольший вклад в теги

Все теги (3)

Лучшие ответы пользователя

Все ответы (2)
  • Что за проект сделать на фронте, что показывает, что можно идти на собеседование?

    olibro
    @olibro
    то есть что выше этого есть, сделать его, чтобы пойти на собеседование, уверенно? Или задачки в leetcode более важны чем проект? Что надо делать?


    Продолжай делать свои проекты, ты на верном пути. Даже не просто ради собесов, а для развития, поскольку там у тебя будет полная свобода. Лучшие результаты можно класть в портфолио и деплоить, чтобы прикладывать к резюме. Это полезно на всех уровнях. Задачки - для тренировки перед задачами на интервью будут плюсом.
    Ответ написан
  • Как правильно делать асинхронные запросы при отрисовке компонента?

    olibro
    @olibro
    Каждый хук (то есть функция) требует вторым аргументом зависимости, поскольку ей важно понимать, какое значение будет содержаться в момент её исполнения. Если зависимость обновилась, то исполнится и функция.
    Как правило, такие ошибки подсвечивает и ESLint, например.

    Но может возникнуть ситуация, когда переменная, указанная в зависимостях, вызовет бесконечный луп, поскольку что-то её меняет извне. В вашем случае, переменная getCity обновляет поле coords в глобальном стейте, это и вызывает ре-рендер. Имеет смысл подумать над порядком вызова данных запросов, например, вызывать только одну функцию (которая будет выполнять два запроса асинхронно), т.е. скрыть эту логику под капотом самого запроса. Например, сначала получаем город (хоть он у нас и дефолтный, Ижевск), затем, если запрос получения города обновил нам координаты и они вообще существуют, выполняем запрос для погоды.

    Чтобы доработать текущую реализацию, можно выполнить вопрос в отдельных хуках, чтобы не зависеть, и разделить логику: город без координат существовать не может и т.п. В то же время, это не вызовет бесконечные циклы.

    useEffect(() => {
            dispatch(getCity(city)) 
        }, [city, dispatch])
    
        useEffect(() => {
            // если координаты появились/обновились, получаем погоду
            if (coords) {
                dispatch(getWeather(coords))
            }
        },  [dispatch, coords])


    Пробуйте, в сети много материала на эту тему.
    https://medium.com/@andrewmyint/infinite-loop-insi...
    Ответ написан