Alexander
Токсичные вы, однако. Вместо того, чтобы по-человечески объяснить, сначала выльете все свое недовольство
Vadim
Токсичные вы, однако. Вместо того, чтобы по-человечески объяснить, сначала выльете все свое недовольство
Подожди, тебе говорят - это не правильно, говорят почему, кидают ссылку на оф доку где написано что так не надо делать. И поэтому мы токсичные? Ты вообще в себе?
Vadim
Так я и сказал "сначала". Я ссылку вижу только в самом конце обсуждения
Ну это потому что ты до конца обсуждения не мог принять другие аргументы
Alexander
Ну это потому что ты до конца обсуждения не мог принять другие аргументы
Так я объяснял свою позицию. В ответ: "я б на тебя нассал"
Alexander
Не так?
Alexander
Ладно, уже флуд пошел
Vadim
Просто оставлю это тут
Ну так там написано «я бы на тебя нассал»? Я чет не вижу
Alexander
Ну так там написано «я бы на тебя нассал»? Я чет не вижу
Мне нравится твоя позиция "Надо вырвать из контекста" :)
Китикет
Решим на месте
Alexander
Решим на месте
onToggle={changeModalState}
Vadim
Мне нравится твоя позиция "Надо вырвать из контекста" :)
Ну вообще до этого он тебе вполне объяснил свою позицию.
Китикет
onToggle={changeModalState}
Как это решает проблему и куда мы передаем этот onToggle?
Vadim
Мне нравится твоя позиция "Надо вырвать из контекста" :)
Мне ещё нравится что один человек написал с большой натяжкой в твоём отношении что-то что тебе не понравилось и мы тут все 7503 члена чатика стали сразу токсичными) как то ты сильно к сердцу все принимаешь
Vadim
На код ревью наверное вообще тебе тяжело приходится
Alexander
Как это решает проблему и куда мы передаем этот onToggle?
В модалку. А если у тебя анимация на модалку и тебе нужно что-то сделать после нее? таймаут ставить?
Oleg
Ну вообще до этого он тебе вполне объяснил свою позицию.
В любом случае я не прав был, он вроде адекватный, хоть и бред пишет
Oleg
Мб не всем повезло с нормальными лидами
Китикет
В модалку. А если у тебя анимация на модалку и тебе нужно что-то сделать после нее? таймаут ставить?
Так у нас имеется только ref на модалку без ее текущего состояния, как этот onToggle должен сказать компоненту рядом с модалкой, что она открыта?
Vadim
В модалку. А если у тебя анимация на модалку и тебе нужно что-то сделать после нее? таймаут ставить?
Так подожди. Почему открываешь модалку через вызов метода через реф, но делаем дела по открытии модалки через коллбэк который пропсами в компонент передаётся?
Китикет
Анимации таймауты это слишком узкие юзкейсы, без кода их не имеет смысла обсуждать, потому что реализаций миллион и они все очень специфичные под конкретный проект и окружение модалки
Alexander
Мне есть, к чему стремиться, как и всем здесь. А реагировать на что-то так... Ну я тоже могу сказать, что ты пишешь говнокод, а можно человека подтолкнуть к правильному варианту. Для этого и есть этот чат. Мир - иллюзия на мой 1 вопрос же все объяснил без оскорблений. А тут что случилось?
Vadim
Мне есть, к чему стремиться, как и всем здесь. А реагировать на что-то так... Ну я тоже могу сказать, что ты пишешь говнокод, а можно человека подтолкнуть к правильному варианту. Для этого и есть этот чат. Мир - иллюзия на мой 1 вопрос же все объяснил без оскорблений. А тут что случилось?
Ну я вот тебя наталкиваю на то что использование методов компонента напрямую через реф не даст тебе такой гибкости как контроль состояния компонента через пропсы. Ну это кроме того что так делать это говнокод)
Китикет
Так у нас имеется только ref на модалку без ее текущего состояния, как этот onToggle должен сказать компоненту рядом с модалкой, что она открыта?
Т.е. onToggle все равно изменяет какой-то внешний флаг. Итого, у нас имеется этот самый флаг, а так же состояние модалки, которое находится внутри компонента
Китикет
Если я правильно понял
Китикет
А это какое-то бесполезное разделение и усложнение логики
Alexander
Не бери в голову короче)
Я никак это не воспринял, не переживай. И моя самооценка от этого не упала :)
Vadim
А если такой пример? this.modalRef.open() <Modal onToggle={this.input.focus} />
Так а почему тогда не сделать пропс isOpened модалке?
Alexander
Так а почему тогда не сделать пропс isOpened модалке?
А если у тебя анимация есть на модалке и onToggle сработает после ее окончания, а не сразу?
Vadim
А если у тебя анимация есть на модалке и onToggle сработает после ее окончания, а не сразу?
Не понимаю какое это отношение имеет к контролю состояния
Vadim
А если у тебя анимация есть на модалке и onToggle сработает после ее окончания, а не сразу?
Ладно. Что делает метод open? Наверное по нему внутри модалки меняется состояние isOpened так почему бы не передать это пропсом без метода?
Vadim
Это же этот кейс?
А ты что не можешь запустить анимацию по изменению пропса?) if(isopened) startAnimation() , не?)
Alexander
Вот посмотри выше
Мы сейчас разжевываем мой подход? :) Я вроде как услышал и даже принял ваши комментарии. Зачем мне сейчас доказывать то, от чего я отказался? :)
Китикет
Ну вот простой пример того, что я имел в виду const Something = () => { const [isOpen, setIsOpen] = useState(false) const open = useCallback(() => setIsOpen(true), []) const close = useCallback(() => setIsOpen(false), []) return <> <button onClick={open}>Открыть модалку</button> <p>Модалка {isOpen ? 'открыта' : 'закрыта'}</p> <Modal isOpen={isOpen} close={close} /> </> }
Mihail
Забейте
Mihail
Идите спать
Vadim
Мы сейчас разжевываем мой подход? :) Я вроде как услышал и даже принял ваши комментарии. Зачем мне сейчас доказывать то, от чего я отказался? :)
Потому что ты отказался от реактивного подхода в пользу императивного. С таким же успехом ты мог писать не на react а на jquery например. Для того что ты написал тебе не нужен фреймворк
Vadim
Не ожидал?)
Vadim
Мы сейчас разжевываем мой подход? :) Я вроде как услышал и даже принял ваши комментарии. Зачем мне сейчас доказывать то, от чего я отказался? :)
Ты нам объясни то по нормальному почему ты отказался. Пока что только я услышал что тебе нужно анимацию запускать. Я тебе написал как можно запустить анимацию передавая пропс isOpened.
Mihail
Пацана съели за модалку
Vadim
Пацана съели за модалку
Жестокий мир фронтенда
Китикет
Меня тут тоже когда-то за модалку поймали
Китикет
Давно
Китикет
Так что это обыденное дело
Alexander
const Something2 = () => { const [isOpen, setIsOpen] = React.useState(false); const [isFullClose, setIsFullClose] = React.useState(false); const open = React.useCallback(() => setIsOpen(true), []); const close = React.useCallback(() => setIsOpen(false), []); const fullClose = React.useCallback(() => setIsFullOpen(false), []); return ( <button onClick={open}>Открыть модалку</button> <p>Модалка {isOpen ? 'открыта' : isFullClose ? 'закрыта полностью' : 'закрыта'}</p> <Modal isOpen={isOpen} close={close} onCloseAnimationEnd={fullClose} /> ) };
Alexander
Почему ты тут не можешь поменять isOpen в конце анимации?)
А если мне надо что-то сделать по началу закрытия и по концу?
公墓
Я таких сук уже штуки 4 забанил в одном чате
Alexander
Самое интересное пропустил...
Vadim
А если мне надо что-то сделать по началу закрытия и по концу?
Я просто не совсем понимаю почему анимация это отдельное состояние)
Vadim
Даже если тебе и надо чет делать, то оставь эти коллбэки
Vadim
Они все равно выполнятся
Vadim
isOpen={isOpen && !isFullClose} как вариант решения
Alexander
Кстати ты фрагмент забыл
Ну давай еще предъяви, что по открытию модалки isFullOpen будет false :D Я же просто как пример
Китикет
Просто к слову
Vadim
Ну давай еще предъяви, что по открытию модалки isFullOpen будет false :D Я же просто как пример
Я как понял тебе надо при открытии и закрытии запускать анимации. Плюс иметь коллбэки на концы анимаций. opened: boolean onClose: Function Внутри компонента - opened ? startOpeAnimation : startCloseAnimation компонент родитель имеет состояние opened. onClose это состояние меняет на false. Также он прокидывает коллбэки которые делают дела на начало/конец анимации
Mr. Sam
Друзья, я изучал ThreeJS. Скажите, лучше ли изучать ThreeJS на сайте threejs.org или изучать книги? Заранее благодарю за ответ
Roman
Книги устаревают
Roman
Почему?
Потому, что их долго писать и тяжело обновлять(я про узкоспециализированные)
Oleg
нормально ли вешать на кнопку handleClick, чтоб отследить нажатие колеса и открыть в новой вкладке?
Oleg
Нет
а как это сделать по бест практике?