Дмитрий
Люди добрые, помогите пожалуйста советом! Задание сделать виджет с погодой, в котором при нажатии кнопки будет добавляться новый компонент с погодой для введенного города( а не заменяться предыдущий). Пытаюсь сделать через массив, но при введении нового города ничего не обновляется, хотя в массив добавляется новое значение.
Дмитрий
Дмитрий
Dinar I
вынеси массив с которым будешь работать в хукстейт, затем при вызове функции просто через concat либо же через [..oldCity, city] используй setState, это как один из вариантов, если работать с useState()
Сергей
тоесть сейчас, если юзаются классовые компоненты, то лучше рефы кидать в рендер?
Да я о том что реакт уходит быстрым шагом от классовых компонент и если юзать его в ногу со временем зачем вообще пользоваться конструктором ? Писать новое на функциональных компонентах и не заморачиваться..
Сергей
А старое пусть остаётся как есть..и вся проблема...
Ruslan
такое ощущение, что материал в доке устаревший и обновляться не планирует
Сергей
ну вот я изначально и задвался вопросом правильно ли делать это в конструкторе, если уже используются классовые компоненты
Вообще классовые уже пережиток....все новое лучше на функциональных писать иначе зачем в реакт уходить было..
Ruslan
неудачно пошутил?))Dmitriy
Сергей
useState гораздо проще и прикольней setState
Sergey
Конечно, ведь прикольность и простота это главное в разработке. А то, что мало кто может объяснить как конкретно хуки работают, на каких принципах и хорошо структурировать код — то такое, ага.
Ruslan
useState гораздо проще и прикольней setState
согласен, но я иногда скучаю по колбеку, useEffect не идеален:/
Сергей
такое ощущение, что материал в доке устаревший и обновляться не планирует
Так скоро под 17-й писать будут..наверное потому особо и не обновляют..)
Dmitriy
setCity(cities => [...cities, refCity.current.value])
Sergey
А что там объяснять...просто загримированный setState под каждый отдельный случай..
охуенное объяснение. а главное, неверное. но разработка это прикольно.
Сергей
согласен, но я иногда скучаю по колбеку, useEffect не идеален:/
Ну жизненные циклы мне тоже понятней чем логика useEffect...но это дело времени..
Дмитрий
setCity(cities => [...cities, refCity.current.value])
воооу. Спасибо) не пояснишь почему в таком случае заработало и в чем была моя ошибка?
Сергей
Главное во всем этом каждый день узнавать и пробовать немного нового а не пылью зарастать..иначе скучно и рутинно все..
Dmitriy
воооу. Спасибо) не пояснишь почему в таком случае заработало и в чем была моя ошибка?
Читай что такое лексическое окружение, замыкание. В доке реакта - особенность работы хуков. https://ru.reactjs.org/docs/hooks-faq.html#why-am-i-seeing-stale-props-or-state-inside-my-function
Dmitriy
Спасибо)
Запомни простое правило. Если нужен новый стейт на основании старого то юзай колбек. Если нужен новый стейт на основании нескольких старых стейтов - useReducer
Сергей
Ребята, что опять делаю не так?
Сергей
Сергей
Сергей
Igor
Ребята, что опять делаю не так?
Всегда было интересно. Зачем лезть во фреймворки, не зная языка?
Zaff
https://reactjs.org/docs/forms.html#controlled-components
Sergiy
привет всем
Сергей
Не пойму а зачем там реф ?
Zaff
Всегда было интересно. Зачем лезть во фреймворки, не зная языка?
многие так учатся, не все сразу понимают как и где использовать фичи языка без практики но бывают конечно и кейсы слишком зашкварные
Сергей
Всегда было интересно. Зачем лезть во фреймворки, не зная языка?
Опять двадцать пять) Можно пожалуйста менее токсично
Sergiy
я работаю с input... Столкнулся с такой проблемой: Если использую тег input - всё работает. Если выношу его в отдельный компонент - перестает работать.... Скрин сейчас скину
Zaff
Не пойму а зачем там реф ?
хз, по-моему человек просто не смотрел как принято делать то, что он пытается сделать, а начал писать по по своему
Igor
многие так учатся, не все сразу понимают как и где использовать фичи языка без практики но бывают конечно и кейсы слишком зашкварные
дак понятно учатся. но хотя бы элементарный дебаг, тот же console.log освоили, чтобы понимать, что там приходит
Sergiy
окей
Павел
народ. напомните. как передать в компонент инлайн стиль... У меня: font-family: Adventure Regular но не помню, как это в реакте записать. Подскажите.
Павел
4 утра. Мне уже не помогает)
Igor
3 Скрин )
ну у тебя current не определён. логично, что что-то с this.answerRef у тебя не так. выведи его в консоль, посмотри, что там
Igor
ну вот и копай в эту сторону
Сергей
Может я ночью туплю но не с он ченчь ли ему снимать евент и оттуда сетать велью..
Сергей
ну вот и копай в эту сторону
Не очень понимаю насколько глубоко, и в какую) Поэтому и пишу
Sergiy
https://codesandbox.io/embed/condescending-http-rdb6n?fontsize=14
Ivan
Тебе не нужен реф. Копай в сторону документации.
Sergiy
я не шарю, как там верно всё настроить, чтоб работало, но код есть
Zaff
https://codesandbox.io/embed/condescending-http-rdb6n?fontsize=14
ничего не вижу в браузере
Sergiy
ну вот я говорю, не разобрался как настроить
Sergiy
посмотри код просто
Сергей
Тебе не нужен реф. Копай в сторону документации.
А если с рефом? У меня так в другой компоненте работает Идентичный код А в этой не хочет
Сергей
Убери реф...в он ченчь пихни стрелочную функцию..в нее заходит евент.у евента бери тарге велью и сетай в Стейт..
Ruslan
рефы вообще это крайний случай
Сергей
А то запускается копать в рефы..и вообще реакт говорит что рефы это не по фен-шую...они на самый крайний случай когда уже вообще никак..
Сергей
А то запускается копать в рефы..и вообще реакт говорит что рефы это не по фен-шую...они на самый крайний случай когда уже вообще никак..
Океей, так сделаю, спасибо! Просто интересно, почему один и тот же код по разному работает
Sergiy
не могу понять, почему с компонентом не работает( Если просто использую инпут - всё работает) Спасибо за помощь
Sergiy
Igor
ваши видеокурсы безнадёжно устарели
Sergiy
какие курсы?
Сергей
Он там как е .. и у него велью берется
Sergiy
хендл чейндж и дефолтвелью прокинь дальше до инпута внутри компонента
а если я потом захочу использовать этот компонент в другом месте?
Sergiy
что помешает?
как мне потом в другом месте onChange сменить?
Dmitriy
как мне потом в другом месте onChange сменить?
в другом месте в проп ончейдж пойдет ссылка на другой хендлер
Vlad
Что сказать человеку, который хочет matherial-c?
Сергей
Почитай про редах форм...там сложно в начале но потом прикольно..создай один раз норм компонент инпута с валидацией.. настройкой через пропсы и юзай во всех формах..