Anonymous
Куда выпилить, зачем😳
Tim
Привет всем ! Помогите советом пожалуйста, смысл в изменении типа инпута с 'password' на 'text' с целью просмотра по клику на кнопочку с глазиком, не могу додуматься как передать какое либо состояние в этот инпут
Tim
Tim
ну или как это вообще по уму делается
Dmitriy
Почему не можешь передать? И зачем ты стайледы в компоненте создаешь?
потому что в доке прямо написано что так делать не нада)
Tim
Почему не можешь передать? И зачем ты стайледы в компоненте создаешь?
библиотека styled-components, у меня очень маленькие компоненты - дабы не было пересечения классов (про eject в курсе)
Anonymous
из бункера прогаешь?)
Да я в основном на нативном пишу, у нас в проекте на мобильной версии есть реакт, но там старая версия, обновлять нельзя т.к все рухнет, вот и пишу там что то на классах, сейчас с хуками хочу познакомиться
Dmitriy
как нада ?)
доку видишь?
Tim
Не нужно их так создавать
ты мне вот вообще не предал сейчас в себе уверенности, как начинающему ) что делать то ?))
Ivan
Народ. Спасите пжлста. Начал изучать реакт, и походу я для него слишком тупой. Не могу контексты с хуками понять, уже дня три ебусь с этим. Значение контекста сбрасывается на изначальное хоть убейся. Ткните носом в коде https://codepen.io/rpravm/project/editor/Anzpap
Ты передаёшь только объект с состоянием. А внутри пытаешься вызывать какие-то методы. Склоке всего, если ты откроешь консоль и начнёшь дебажить, то сам справишься.
Tim
доку видишь?
что именно ?
Dmitriy
что именно ?
ну хотя бы интро)
Tim
ну хотя бы интро)
Я не понимаю что ты мне хочешь сказать )
Тимофей 🛴
ты мне вот вообще не предал сейчас в себе уверенности, как начинающему ) что делать то ?))
Так же как и другие компоненты создавать отдельно. И объясни в чем проблема передать пропс?
Dmitriy
Я не понимаю что ты мне хочешь сказать )
найдти отличия в своем коде
Vitalii
есть подобный чат для си шарп?
💀
Ой-ей, не дочитал код. В стейте храни только данные. Не нужно туда засовывать функции.
Но тогда как менять стейт "снаружи"? Эту тему я взял с примера со стэка
Dmitriy
Но тогда как менять стейт "снаружи"? Эту тему я взял с примера со стэка
начни с того что больше не юзай кодепен для реакта
Tim
найдти отличия в своем коде
Это то работает, пароль не забивается звездочками
Dmitriy
🤯💁‍♂️
Тимофей 🛴
Это то работает, пароль не забивается звездочками
При нажатии на глаз вызывай изменение состояния, состояние прокидывай куда надо и изменяй тип поля и иконку
Tim
сек
Bogdan
Ой-ей, не дочитал код. В стейте храни только данные. Не нужно туда засовывать функции.
я не могу обьяснить, почему не работает вот как у него? типо setCounter вернет все как нужно, но он не проапдейтит именно state
Tim
При нажатии на глаз вызывай изменение состояния, состояние прокидывай куда надо и изменяй тип поля и иконку
ну либо я деревянный по пояс либо первое, в общем, можешь обьяснить как прокинуть состояние этого стейта в так сказать родительский компонент ?
Tim
Оно должно быть в родительском
тогда ж перерендерится весь компонент и заберет с собой все введенные данные
Tim
утечка память на лишние рендеры и тд, гораздо ж проще 1 инпут отрендерить чем всю страницу, или я чего то не понимаю
Tim
)))
Tim
Заберет все данные? Ууу какой негодяй)
Короче говоря когда я сделал стейт в мэйн компоненте у меня реакт перерисовывал весь компонент со всеми имеющимися на странице полями кнопками и тд, сечас меняется один только инпут
Tim
только тип его не могу прокинуть, не получается поднять состояние и связать его с совершенно другим полем
💀
можно открыть код на редактирование?
Наверное, я хз если честно
💀
Там форкнуть можно
Tim
Ну вот инпут это и есть родительский компонент, а кнопка с глазом его child
Смотри, вот инпут, он лежит в главном компоненте но сам инпут в его виде существует в одном экземпляре и формируется он лишь передачей пропсов, вот как от этой кнопки и ее состояния скинуть на изменение типа поля ?
💀
https://codesandbox.io/s/sweet-matsumoto-vr6x4 вот так же работает
Ну это обычный стейт. А мне нужен контекст, который можно модифить из вложенных компонентов
💀
а у тебя не обычный?? у тебя тоже самое
Ну он подцепляется через useContext
Bogdan
Ну он подцепляется через useContext
сделай на кодебоксе, какой смысл за тебя гадать, вот работает - работает
💀
Да дело не в кодебоксе. У меня на своем сервере такая же картина
Bogdan
ну на кодебоке можно покликать, а в том говне нет
💀
Ппзже перекину. Сейчас попробую другой подход снчала
💀
Ппзже перекину. Сейчас попробую другой подход снчала
Не помогает как в офф доках через Consumer. Походу где-то в другом месте я ебланю
Vitalii
какие вы знаете сайты с плохим юзабилити
Пöß d'Ivoire
правил батон, хедер и контекстМенеджер
Пöß d'Ivoire
стейт храни отдельно без всяких функций, это же данные. фунцию для смены стейта пихай отдельно в контекст, то бишь в value={тут стейт + функция для его смены}
💀
https://codepen.io/jurij-solowew/project/editor/XpMprP
Благодарствую очень 👍
Пöß d'Ivoire
Благодарствую очень 👍
Не за что,хотя я до конца сам не понял почему твой вариант не работал,но выглядел он явно нездоровым)
Vadim
Привет всем ! Помогите советом пожалуйста, смысл в изменении типа инпута с 'password' на 'text' с целью просмотра по клику на кнопочку с глазиком, не могу додуматься как передать какое либо состояние в этот инпут
Положи И инпут И кнопку глаза в отдельный компонент. Сделай у этого компонента стейт. Меняй его по клику на глаз, в Input меняй тип в зависимости от состояния
Vadim
Слетает введенное в инпут
Ну так это уже другая проблема. Откуда этот компонент Input?
Tim
Ну так это уже другая проблема. Откуда этот компонент Input?
Этот компонент отдельный, он как бы один и переиспользуется путём передачи пропсов
Артем
Слетает введенное в инпут
Вложи в компонент со стейтом и при смене значения меняй стейт, а при смене типа передавай стейт контейнера как пропс в поле
Tim
А значение введённого он хранит?
Ну поля вэлью нет совсем
Vadim
Ну поля вэлью нет совсем
Это ответ на мой вопрос? Кажись нет
Артем
Ты не понял. В компоненте контейнера ведешь стейт значения, в него вкладываешь компонент инпута и вешаешь на его онЧейндж обработку со сменой стейта контейнера
Артем
При смене типа поля передаешь в качестве пропса компонента поля значение стейта контейнера. Как стартовое значение инпута
Vadim
Слетает введенное в инпут
https://ru.reactjs.org/docs/forms.html#controlled-components вот читай короче
Tim
Это ответ на мой вопрос? Кажись нет
Думал будет понятно, что ничего он не хранит, компонент инпут представляет собой просто ретерн инпута с входящими данными в виде пропсов, вэлью нигде не фиксируется
Vadim
Думал будет понятно, что ничего он не хранит, компонент инпут представляет собой просто ретерн инпута с входящими данными в виде пропсов, вэлью нигде не фиксируется
Ну так если он нигде не фиксирует, почему при перерисовке компонента этот value должен сохраниться?) читай по ссылке выше короче
Vadim
Логично, дырявая моя голова )
И перечитай ещё раз документацию на сайте реакта, чтобы таких вопросов не возникало у тебя