Вы видите копию треда, сохраненную 13 мая 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Ангуляр для чедов.
Вью для беток.
Реакт для омежек.
Идеальный инструмет для индикабачков и микро кабанчиков с микро стартупами. естественно с TC
Всего хлебнул. Коа, нест, монга, постгрес, датастор, монолит, микросервис, бессервер, пм2, кубер, gcp, ажур, даже ебучий селениум.
С фронта на бэк идет пост на создание. На бэке коллятся запросы в другие сервисы для взятия данных, запись в бд создается и возвращается фронту.
Проблема в том, что запрос может занять >30 мин. Моя идея пока в том, чтобы вернуть фронту хоть что-то, а потом - фронт сам на гет раз в 30 секунд получит новые данные. Но это пиздец тупо, как мне кажется.
Посмотрел, что можно использовать Pub/Sub или воспользоваться сокетами. Может есть и что-то еще. Не особо шарю, поэтому спрашиваю, может есть тру вэй для решения таких проблем.
1. Открываешь страницу с кнопкой
2. Берешь линейку
3. Приладываешь линейку к монитору
4. Измеряешь линейкой размер кнопки
5. Размер кнопки установлен
Можешь еще сервер эвент использовать
https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events
это проще чем уебсокет, а пубсуб на беке делать редисом.
Спасибо за наводку. Почитал про sse, вроде то, что нужно. Опробую
Т.е схема такая
фронт --> запрос ручки для запроса данных
фронт --> всегда слушает server set events ручку
Ручка --> Редис --> Микросервис
Микросервис --> Редис -> server set events ручка
в конфиги.
Если тебе это нужно, то что-то уже пошло не так. Если тебе похуй, то оберни в трай кэтч.
Поправлюсь: до раздела "Типы данных". А то сейчас начнётся кококо, что я дебил, забуксовавший в самом начале учебника.
Если у тебя типы данных вызывают проблемы, то скорее всего js тебе рановато изучать и фундаментальных знаний немного. Начни с курса по языку си. Это буквально неделя и ты поймешь, что к чему и как работает. Потом будет значительно легче во всех языках
Да, мы тебе тут можем человеческим языком пояснить, но не будем, потому что ты тупой.
Через typeof
Взял на заметку, но как-то слишком прохладно звучит.
Ну попал и попал, бывает. Делать что ли тебе нехуй, анон, кроме как вкатышей оскорблять. У тебя там бабок дохуя фармится в наносекунду, сидишь в чистоте и тепле, а не ебашишь на заводе, обмазавшись соляркой и углём. Жизнь удалась, нахуя тебе вся эта мышиная возня, нахуя тебе кого-то оскроблять, нахуя тебе на ком-то самоутверждаться. Ты уже на вершине, никто с этим не сможет спорить. Тем более, что на работе своей ты уже наверняка повидал всякое - и вкатышей, которые нихуя не знают, и мидлов, которые не могут на простые вопросы ответить. Да и работа у тебя наверняка такая, что уже тупо лень кого-то еще в интернете пинать, доказывая своё превосходство.
Я просто не понимаю. Зачем вести себя как вкатившийся джун, который постоянно чувствует себя дауном-аутистом, и поэтому ему нужно кого-то на анонимной имиджборде пнуть и послать нахуй.
Поясняю. Я помогу вкатуну, когда у него будет конкретный вопрос из ряда "почему так работает?", "вот код, хочу сделать Х, а получается Y, что я делаю не так?" и тд. Но когда пчелик приходит и говорит, что ему сложно на типах данных в джавасрипте - ну это сразу в хохот. И пишет, что до этого норм, было, а тут стало тяжело, давайте нормально поясняйте. А предыдущие главы какие: хеллоу волд и переменные, а он на них по 4 часа тратил. Это прям винрар.
Но надо отметить, сам звезд с неба не хватаю, скромные 4к всего.
>>2619623 →
>>2619632 →
>>2619668 →
Ребята, спасибо вам большое за попытку помочь, но на тот момент я ни черта не понял из ваших объяснений. Я никак не мог понять, почему в переменную записывается функция, хотя вы утверждали, что записывается результат, а не функция. Поник головой, два дня играл в КСГО, посрался с другом, помирился с другом, сел обратно за эту задачу, и понял, что всё дело в том, что str - это примитив. Если к примитиву применять метод, то результат не будет сохраняться. Только к объектам можно применять методы, рассчитывая на сохранение результата. В данном случае для str создаётся "объект-призрак", суть которого я так пытался запомнить. В этом "объекте" применяется метод toLowerCase(). А потом результат тут же забывается, ведь str - это примитив, а не объект. Результатом должна быть строка полностью в нижнем регистре. Поэтому тут два варианта: либо применять метод к примитиву каждый раз, либо записать результат метода в отдельную переменную, и использовать уже её вместо метода.
Вот так выглядел мой код изначально. Как видите, я не использовал вторую переменную, которая бы сохраняла результат метода toLowerCase(), применённого к примитиву str. Отсюда и проблема.
Ну спасибо, а то я уже собирался закрыть Visual Studio Code и идти плакать в подушку, как вчера. Продолжаю учиться тогда.
>Вот с этим солидарен
чаю. даже если какая-либо проблема была исследована и расписана в тексте - это может быть вовсе не решением для анона-вкатыша.
т.к. проблема была вовсе о другом а гадать на картах для выявления вопроса меня не учили.
кст, бывалые в этом треде, раньше же было пояснение в шапке, что нужно код в песочницу пихать и ссылку сюда давать? год-два назад вроде было, не?
или у меня какие-то ложные воспоминания?
Ты для души некстжс собрался изучать или чтобы кабану проекты писать? Вот и пиши.
>>22925
Там не настолько необъятная дока. Актуальная инфа будет в доке.
Копипастить тоже следом за видео будешь?
Ну вот смотри, какой-то видос с челом который клепает сайт на некст, аж 12 часов назад!
https://youtu.be/e1EIwuO-Dlo
не подставлять другой текст.
Ой, это что, получается програмизды не нужны? Ведь я сделал для себя скрипт с нулевыми знаниями JS. Как же так?
Тьфу на вас блять. Не зайду сюда больше никогда
Ты ему собрался перезванивать из-за одной функции, для которой надо тащить лодаш?
Вебмакакинг ВСЁ
ChatGPT уебал всех вкатунов и уебет скоро всех мидлов. Советую осваивать курсы сантехника
> бесплатна
> 200 рублей
> даже 2к
> нет всё-таки 200р
> съэкономил 6к
> внезапно 1к
+15р за двое трое? суток?
Рад за тебя, теперь осталось вкатиться обратно на толоку.
Почему ты здесь а не в /san?
Жиквери очевидный.
Не, он приходил 23-го https://2ch.hk/pr/res/2609772.html#2621062 (М)
Опять абстрактная задача, с чем логично был отфутболен. Сходил в /b, нихуя не получилось.
3 дня объяснял ИИ чего он хочет.
Прямо как этот с его контурами >>22965
Что он там подразумевает под контурами и что делает - да кто его знает лол.
320x240, 0:14
Проорал Анончик. Как же ты тут всех попустил.
трахнул получается, теперь тебе открыта дорога в сеньоры
Ну я же первым постом тебе тогда указал на проблему >>2621098 →. А потом ты попыхтел пару деньков - и чатЖПТ сделал, что тебе нужно. Так что не ленись в следующий раз просто.
Попроси у ChatGPT "напиши лучший фреймворк для фронта".
реакт без вариантов, он просто популярнее и инфы по нему больше. К тому же он проще всех, остальные используют для довольно специфических задач
костыль.костыль(костыль).
Почему кстати нода до сих пор не стала универсальным инструментом на бэке? Буквально лучше решеток и джавы почти во всем, не говоря уже о всяких питухонах.
Говори конкретнее, что в жабе или решетках есть такого, чего нельзя реализовать на жс/тс?
Если нужна валидация или проверка типов в рантайме, то классы.
Принципе, можно стоя в гамаке трахаться.
первый пост в этом треде тебе в помощь.
ну а если ты задний писал через классы то угловатый самый раз.
А теперь реализуй выгрузку файлов чанками, динамическую форму без перезагрузки страницы с переменным количеством инпутов в зависимости от ввода, анимацию открытия закрытия меню древовидной структуры и чтобы количество уровней дочерних элементов было неизвестно заранее, перетаскивание элеметов этого меню, плавный ресайз отдельных областей страницы, контекстное меню на странице, события на странице при скролинге например изменение лайаута элементов и тд и тп
Сначала устройся на работу разработчиком браузеов, чтобы это все на css стало возможным. А на жс я и сам могу, незачем платить.
Это троллинг? В чем смысл того, что ты перечислил? Такие задачи встречаются? Есть где реализовано похожее?
Что там необычного увидел? CRM никогда не писал или другой софт для внутренних задач бизнеса? Ну разве что про скроинг это скорее из свистоперделок для публичных сайтов.
В стандарте - нет. Читал бы ее - знал.
TCO была принята в стандарт ES6 и не имплементирована никем, кроме javascriptcore.
В вебе заведено что от ЛЮБОГО стандарта для его принятия требуется две независимые имплементации среди активно используемых платформ.
Так как TCO не было имплементировано никем более, его выпилили их спеки с ES7.
thx
А сохранение выбранной темы?
Причина подрыва?
бамп вопросу
Почему вы не читаете спецификаций?
что за глыба?
>чтобы вот в голове все выстроилось в цельную и гармоничную картину
CSS не является цельным и гармоничным, так что он не выстроится. Просто берешь - и отдельно кусочками учишь, как работает грид и что на что в нем влияет, как работает флексбокс и что на что в нем влияет, как работает блочная модель и что на что в ней влияет.
Ты серьезно сейчас? У нас бэк на шарпах - и он по сравнению с js примерно как Нед Старк по сравнению с Вонючкой. Тут даже не знаешь с чего начать - начиная от возможности писать аллокейшен фри код, по скорости не уступающий нативному и заканчивая линкью, позволяющему за 2 строчки сделать то, что на js займет 50 и потребует трехуровневых вложенных циклов с 10-ю временными переменными, и возможностью в целом писать методы расширения, тем самым полностью получая контроль над внешним видом кода, выводя его переиспользование на новый уровень в плане интуитивности и понятности. И это я еще про инструментарий для дебага не начинал, от которого на js плакать хочется, и встроенной документации, позволяющей за счет строгой типизации и своего качества прямо из IDE понимать, какой функционал и каким образом использовать без необходимости лезть на сайт c документацией за подробностями.
Ну есть же какая-то концепция вообще у css. Например разделение элементов на строчные и блочные. У большинства строчных нет размеров, строчные не переносят следующий элемент потока на новую строку, на строчные влияет line-heigh
Или например концепция весов у селекторов Лидирует тот стиль который находится в селекторе с наибольшим весом. Если веса селекторов одинаковые то лидирует стиль в последнем селекторе.
мимо
Есть rxjs он по выразительности не хуже твоего линкью. Все таки нода это лучший инструмент для индикабанчиков. Твой дотнет все же на корпоративный сектор рассчитан и на коллективную разработку с переусложненным пайплайном, тулчейном, окружением
То есть в js по твоему нет ленивых цепочек итераторв и трансдьсеров, что ты привел ликью как ману небесную.
Или в прототипно ориентированном программировании нельзя писать методы расширения?
ты вообще js знаешь?
Отключи хотрелоад.
Сделой скриншот
> апрель 2016
И че они до сих пор вола ебут?
> коллстак
Коллстак из
> функциянеим
> функциянеим
> функциянеим
> функциянеим
> функциянеим
Мне конечно охуеть поможет, как мне без него жить то?
запусти две аппы.
Версии ес бампаются ровно раз в год.
То что было уже три-пять лет назад сложно называть последними версиями.
Через фулстек, потом надоело красить кнопки и пошёл на проэкты только с бэком, к счастью на галере с этим норм.
Пиздец, тоже хочу. На фронтенде работаю чуть больше года, пиздец тупиковая хуета.
>Есть rxjs он по выразительности не хуже твоего линкью
Намного хуже. Просто посмотри и сравни.
>Все таки нода это лучший инструмент для индикабанчиков.
Только тем, что можно запрячь фронтенд-макак писать бэк. На этом преимущества заканчиваются.
>с переусложненным пайплайном
Там пайплайн разработки, внезапно, проще.
>>24235
>То есть в js по твоему нет ленивых цепочек итераторв и трансдьсеров
Просто сравни, как они пишутся. С линкью и рядом не стоит.
>Или в прототипно ориентированном программировании нельзя писать методы расширения?
В js - нельзя.
Спасибо
>Но это пиздец тупо, как мне кажется.
Эээ, почему? Самый простой и самый надежный способ, если на latency похер, а в твоей случае как раз похер.
У меня получается, что каждое слово в новом контуре, а мне нужно что-бы один был контур для всех слов.
Получилось, нужно было поверх each <div> положить, угу.
Контурошизик, вопросы формулируй нормально, ну или пили песочницы, ну чего ты в самом деле.
если ты другой анон, сорян, но про формулирование и песочницу, и к тебе относится тогда.
Вот тебе не жалко пацана? Когда он поток сознания начнет на кабаныча изливать, кабаныч станет потом от него во все стороны шарахаться что б не загрузил шизой.
Смотри где у тебя висят обработчики.
Возможно, ты не туда присобачил обработчик. Ты можешь посмотреть в событии с какого элемента был запущен обработчик.
Возможно, обработчик висит где-то выше и срабатывает при всплытии события. Для этого нужно вызвать event.stopPropagation чтобы не было всплытия.
Скорее пма жалко.
Вряд ли контурошизичный словарь пилить кто-то будет, посадят его на какой-нибудь зашкварный проект и будет себе там контуры в кулачок пилить.
Ах да забыл, проверь что ты не дёргает флаги/мочалку из обработчика в селекте
Ты обучаешься про курсам 10-летней давности, или залез на легаси проект?
> In development (next dev), getStaticPaths will be called on every request.
https://nextjs.org/docs/basic-features/data-fetching/get-static-paths#runs-on-every-request-in-development
>>2625963
Да как ты заебал
У меня есть страница куда при загрузке useEffect'ом выгружается с сервака первый объект в стейт и отображается. В этом объекте содержиться текст и кнопка. При нажатии на кнопку должно инкрементировать let который указывается в ссылке на сервак и должен выполняться запрос на сервак за новой порцией текста и новой кнопкой которые должны быть сразу видны на странице под предыдущим контентом.
Как это сделать по грамотному? Пж помогите ребятки.
И есть ли человеческий способ итерироваться по геттерам в тайпскрипте?
А ты хочешь статику пре-билдить, или тебе каждый раз нужно актуальные данные тянуть с SSR?
Динамика - getServerSideProps, будет вызываться на каждый запрос.
getStaticPaths с getServerSideProps работать не будет, некст после него лёроаёт getStaticProps.
Если тебе нужно периодически пересобирать статику - ISR:
https://nextjs.org/docs/basic-features/data-fetching/incremental-static-regeneration
Та я пока пытаюсь понять, как Некст работает, что бы эффективно его использовать. Если у меня есть, например, страница юзера, она же должна быть династической, верно? Нельзя же при билде срендерить сразу все страницы всех юзеров? Мне кажется, что нет. Отсюда вопрос.
Есть возможность иметь на одной странице два компонента, один со статической инфой (например статья какая-то) и второй с динамической (хедер с данными пользователя)? Просто в двух словах. Доку я потихоньку читаю.
> TS
JS...
Можно покостылить и сделать геттеры на прототипе итерируемыми.
Object.defineProperty(Example.prototype, 'b', { enumerable: true })
for (const key in instance)...
for key in перебирает поля прототипа если они помечены enumerable
>>26015
Что значит приходит кнопка? Очень интересно, но ещё меньше понятно.
Оба варианта работают, но, как ты и говоришь, выглядит убер костыльно. Не понимаю, почему так решили разработчики, не моего ума дело :3 Спасибо
Относительно недавно (в 13 версии) добавили layout'ы. Лейауты не ререндерятся, в них можно заворачивать компоненты/страницы на роутах.
https://nextjs.org/docs/basic-features/layouts
просто нагуглил такое
JavaScript doesn't do parameter-count checking
Тогда не понимаю, зачем такая запись?
Тут обычно 2 варианта:
1) ни нужно, но нужно принять параметр, чтобы использовать другие параметры в функции
2) переложат _ как есть без модификаций
Изредка, может быть договорённость в условных мапах и иже с ними на массивах использовать _ для униформности
Например метод массива map передает в функцию три аргумента currentValue, Index и array, если тебе нужно только значение, то просто пишешь функцию вида (v)=>{} и успешно проебываешь два остальных аргумента. А вот если тебе нужен первый и третий аргумент, то придется второй тоже принять, вот чтобы его пометить как ненужный его обычно обзывают _, пишут функцию вида (v, _, a) => {}.
Кароч примерно такая схема
const Text = () => {
const [data, setData] = useState([{
text: "",
textForButton: ""
textVisibleAfterClickButton: ""
}]);
let i = 0;
useEffect(
//здесь первый запрос на сервер при заходе на страницу и что важно ссылка такая `.../api?id=${i}`
i = i + 1;
)
return (
<p>data.text</p>
<button><span>data.textForButton</span></button>
<p>data.textVisibleAfterClickBurton</p>
);
}
и вот мне надо чтобы после клика на кнопку производился новый запрос на сервер, но как уже понятно по параму = 1.
С него приходит новый жсон который также идёт в дату.
А на странице это должно быть примерно так:
зашёл на страницу первый раз и увидел:
- текст 1
- кнопка 1
- текст который появляется после нажатия кнопки (пока невидим) 1
нажал на кнопку на странице:
- текст 1
- кнопка 1
- текст который появляется после нажатия кнопки (уже видим так как нажал) 1
- текст 2
- кнопка 2
- текст который появляется после нажатия кнопки (пока невидим) 2
Кароч примерно такая схема
const Text = () => {
const [data, setData] = useState([{
text: "",
textForButton: ""
textVisibleAfterClickButton: ""
}]);
let i = 0;
useEffect(
//здесь первый запрос на сервер при заходе на страницу и что важно ссылка такая `.../api?id=${i}`
i = i + 1;
)
return (
<p>data.text</p>
<button><span>data.textForButton</span></button>
<p>data.textVisibleAfterClickBurton</p>
);
}
и вот мне надо чтобы после клика на кнопку производился новый запрос на сервер, но как уже понятно по параму = 1.
С него приходит новый жсон который также идёт в дату.
А на странице это должно быть примерно так:
зашёл на страницу первый раз и увидел:
- текст 1
- кнопка 1
- текст который появляется после нажатия кнопки (пока невидим) 1
нажал на кнопку на странице:
- текст 1
- кнопка 1
- текст который появляется после нажатия кнопки (уже видим так как нажал) 1
- текст 2
- кнопка 2
- текст который появляется после нажатия кнопки (пока невидим) 2
Если тебе нужно значение счётчика держать между рендерами, используй для этого useState.
Твой let i на каждый рендер заново инициализируется в ноль.
const [id, setId]= useState(0);
useEffect(() => {
request(`api/${id}`)
// setData
}, [id])
С зависимости, чтобы запрос дёргался на изменение id.
В обработчике на кнопку делаешь setId(id => id + 1)
Состояние обновилось, на следующем рендере имеем id = 1. id поменялся => запустился useEffect с запросом
че то я запутался в реакте
я могу писать классовые компоненты в 2к23
какие либы юзать для роутинга/стора
Ок, спасибо.
Спасибо
Сорри, если тупой вопрос, но все же... Так а при перерендере старый текст и тот который появляется после нажатия на кнопку не будет пропадать?
Я вижу у тебя в data массив с объектами.
data - состояние компонента в данном случае, которое "переносится" между рендерами.
После изменения id ты просто можешь добавлять новый объект в массив.
Сорта:
useEffect( async () => {
const response = await fetch(`api/${id}`)
const newEntity = await response.json() // новый объект с бэка
setData(state => [...state, newEntity]) // новый объект в конец массива
}, [id])
Дальше просто по своей дате в return проходишься через map и отрисовываешь как надо
Но вообще да, ты делаешь суть TodoApp
Блог на нексте, хочу сделать страничку с выводом всех статей, но чтобы подгружались постранично. Начал проект с App папкой и подходом client\server компоненты, но я так понял что никак из клиент компоненты не передать значения в серверную?
Или это всё хуйня и надо через __апп делать?
Я так понимаю что просто на реакте и с нормальным бэком, я бы бед не знал и state на каждую залупу бы уже навешал,но с некстом чет не догоняю как взаимодействие клиент компоненты и серверной установить
Что по ГОшке думаешь? Хочу в фуллстека перекатиться и далее постепенно на бэк. Или для фронта онли нода без других вариантов?
А,разобрался всё таки,нужно было всего лишь в клиент компаненту пропсом передать серверную
forEach...forEach...forEach...if...if...if...if
Земля стеклобетоном тому, кто потом этот кал говна вилкой рефакторить будет или дорабатывать функционал придется.
Мало того, не забывай, ты на иъёбства с чатгпт и свое время потратил
Нашел вариант через ssh ключи аккаунты менять, попробую, но если анон знает - мониторю реквесты
Как выйти из ситуации? Почему класс модификатор ниробит без !important?
да, я тупой
Сделай основной класс дефолтным и его стили перезаписывай другими классами. В чём проблема? Я бы посоветовал передавать классы массивом и .join(' ') или пустой массив, если нет классов, но за такое тут обоссут. Алсо, есть библа с гибким применением.
https://www.npmjs.com/package/classnames
А можно в двух словах практическую его полезность? Перед тем как я погружусь в его документацию
>Спасибо анончик, работает.
Ёбанный быдлокод, ааааа! У меня кровь из глаз течёт, расстрелять бы или дать пизды за такую писанину!
Похуй, все равно не работает. В одном компоненте работает, а в другом только если !important добавить.
Пиздец, конечно, но такой код в 99% проектов, где шаблоны или рендер функции содержат выражения и даже операторы
А еще бывает сам устаешь и пишешь километровые компоненты...
мимо шел
Толсто. Тебе бы тут такую простыню рублей за 50 накатали, а за 100 - выстроилась бы очередь из желающих. О какой такой тысяче, и тем более шести, ты говоришь?
"Lala" == true возвращает false? Разве он не должен строку к boolean привести и т.к она не пустая сделать её true?
Для фронта вообще никаких альтернатив, интерпретаторы из других языков в жс или васм - игрушки без вакух. Вместо ГОвнеца уж лучше ржавого навернуть, там хоть можно модули к ноде писать.
Что неужели никто в офисе не работает?
Смотря какой дресс код. Может вы как люди в черном должны одеваться.
Я в клетчатых брюков и кофточке простой гонял.
Носи юбку.
> я могу писать классовые компоненты в 2к23
Можешь, но лучше не писать.
> роутинга
Реакт-роутер
> стора
Сильно зависит от размеров аппки. Часто можно обойтись хуками и контекстом.
звучит норм.
По поведению. Плюс, я никогда не пользовался нестрогим неравенством, поэтому не знал про такие приколы и думал что нестрогое приводит к типу и просто if также приводит к типу.
Документацию-то почему не читаешь?
Порталы в react вообще используют на реальных проектах?
Да, например прокинуть ту самую модалку выше в HTMLDOM
>Порталы в react вообще используют на реальных проектах?
конечно, но учитывай что меню может выходить за рамки экрана, поэтому используй floating-ui или react-popper
Логику вычисления ещё подкорректирую. Пока, просто два столбика карточек и ширина картинки примерно равна ширине карточки
width={winSize < CSS_SIZES.WINDOW_MAX_SIZE_MIN_MEDIA_VALUE ? winSize / 2 : CSS_SIZES.QUEST_CARD_IMAGE_WIDTH}
А в самом компоненте вот такую залупу.
const [winSize, setWinSize] = useState(CSS_SIZES.WINDOW_MAX_SIZE_MIN_MEDIA_POINT_VALUE );
// CSS_SIZES.WINDOW_MAX_SIZE_MIN_MEDIA_POINT_VALUE, сделал переменную, что бы вынести в отдельный хук. в компоненте был window.innerWidth, который можно только в компоненте использовать из-за SSR
const resize = () => {
setWinSize(window.innerWidth);
};
useEffect(() => {
window.addEventListener('resize', resize);
return () => {
window.removeEventListener('resize', resize);
};
}, []);
Как идея? Разбираюсь в ньюансах некста и наткнулся на такую минипроблему с компонентом Image в контексте задачи. Да, хуёво, что на каждую картинку навешивается лиснер, но так под любой размер экрана подгонится ширина.
Ахуенное это ваше чат жпт, быстрый вопрос, быстрый ответ, чего мне не хватало всегда. Код-то хуй с ним, чаще вопросы, "есть ли возможность?", "а как оно работает?" и т.д.
Нормальные люди умеют в документацию.
Кстате, этот твой чятжпт обосрался и не сказал про перемножение юнионов.
type Units = 'px' | 'em' |'rem';
type MyType = `${number}${Units}`
Норма. Только портал сам тебе ничего не посчитает, считать все равно надо. Для этого можно использовать popper-js.
const handleSubmit = useMemo(() => {
return (orderDetails) => {
post('/product/' + product.id + '/buy', {
orderDetails
});
};
}, []);
Ну как-то типа: function handleSubmit = useMemo(......
Никак не могу привыкнуть к этой фигне, когда функцию в переменную засовывают
Да, я понимаю что считать надо, но ведь если допустим в документе, то от window, а если в модалке, то от низа модалки, а если скролл модалки, то это на каждый скролл пересчитывать. Не совсем понимаю вот.
>Для этого можно использовать popper-js.
Спасибо, почитаю!
Это называется функция первого класса.
https://developer.mozilla.org/en-US/docs/Glossary/First-class_Function
А как ты хочешь это переписать через функциональное объявление? Кек.
Ну и как бы, как ещё ты будешь хранить ссылку на функцию для мемоизации?
функция высшего порядка это называется, когда функция как аргумент передается.
А че они про присвоение в переменную написали хуй пойму, у них же самих это называется function expression.
Ну тут как бы, есть возможность положить в переменную функцию => JS имеет функции первого порядка.
Функция возвращающая и/или принимающая функцию - функция высшего порядка, как ты и сказал.
>>27023
> IIFE
пик стронли релейтед
А вообще, функцию возвращает функцию, как минимум чтобы было по реактовским правилам этот должен быть хук читай: нейминг, или внутри IIFE оно стриггерится?
Плюс результат всё ещё надо положить в переменную. Видеть такое прямо в пропах компонента я точно не хочу.
Вообще, когда я думал как это закостылить, в голову пришёл другой костыль, но отдаю победу тебе
по идее должны быть можно, если он вызывается всегда, а не внутри какого-то условного оператора. Главное чтобы порядок хуков сохранялся во время повторного вызова компонента.
Поссал на шарпея.
а зачем тебе подписка, почему просто localStorage.getItem не можешь сделать в useEffect'e?
Я по кнопке меняю статус темы в сторедже. Хочу что бы кнопку нажал - сторедж поменялся - поменялась тема приложения (которая подключена в корне приложухи в _app)
Как с редуксом сохранить состояние выбранной темы, после закрытия, а потом открытия вкладки?
Я тебе предлагаю делать нормально, чтобы изменение состояния приложения ложилось в хранилище отдельно, а не так, что ты сначала сохранил куда-то, потом чешешь репу как настройку обратно подсосать. Сейчас у тебя локалсторадж, завтра куки, послезавтра - база, каждый раз будешь изобретать костыль?
Не нравится редукс - выбирай другой магазин, тыщи их.
> Что я делаю не так?
Не читаешь документацию, как и все в этом треде.
Почему ты ее не читаешь, можешь объяснить?
Почему когда я открываю dropdown он расширяет модалку?
Z-index не помогает
Я хотел чтобы когда селект внизу модалки, его опции поверх модалки открывались и за границы модалки выходил
Спасибо. А какие альтернативы? В вью тоже через внешнюю либу приходится это делать? А в относительно новых инструментах, особенно svelte? Почему-то думал, что такое можно делать без сторонних библиотек.
А если серьезно то во вьюжс компилятор шаблонов делает кучу оптимизаций, так что если ты не засунешь транзишен в шаблом то и в бандле транзишена не будет, а дальше тришейкинг бандлера работает
Это слишком просто.
Устанавливаешь залупа 3000, вносишь три строчки в конфиг, запускаешь - миллион ошибок в консоле, нихуя не работает. Заходишь на сайт фреймворка, там тоже самое "три строчки в конфиг и всё". И так со всем. Ситуации, где я просто сделал все шаги из "getting started" и всё заработало, можно по пальцам сосчитатью. Вы ну не вы, ананасики,а разрабы пакетов либо делайте рабочие пакеты, либо более детальную документацию, я хуй знает.
#Горижопа.
Т.е. я правильно понимаю
>чатгпт я буду 3 дня объяснять что мне надо
>живому человеку — не буду
?
Ну с такими софтскиллами тебе точно перезвонят.
Ты еще ембедед не видел, там +1000 к жопагорению. Написал криво код - сгорела плата нахуй
>Написал криво код - сгорела плата нахуй
Ну это личная ответственность пишущего, от такого не особо горит. Типа "сам виноват, хуёво продумал", а тут ты просто по мануалу все шаги делаешь, тупо копипастишь необходимый код и не работает. Ещё горит с необходимости устанавливать доп. библиотеки. Блять, я установил ваш пиздатый реакт! Нет, установи ещё вот этот пакет, вот этот пакет, жопу подтирать этим пакетом, смывать говно этим пакетом и т.д. Ну да похуй.
https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API
Но зачем? Например вот: https://github.com/bfirsh/jsnes
не понял о чем ты все равно
https://codesandbox.io/s/headless-dew-shdt5x?file=/src/styles.css
Я понял что мешает overflow: scroll, как только я его удаляю дропдаун нормально выходит
Сап наносеки, изучаю бэм подскажите по пику правильно ли я неймаю на примере хедера. Вот есть блок хедер в нем лемент
header__content внутри него header__naming -> header__naming-icon или правильнее будет назвать header-icon?
Ага, только учти, что тебе спецификацию на железо выдал производель и если там чего-то нет - то ты можешь очень долго выяснять детали, а сроки горят. Поэтому есть желание попробовать решить так, как на другой железке на поколение младше работало или искать в интернете, а гуглить схемы - это тебе не джаваскриптовые ошибки на стаковерфлоу искать.
Похоже на правду. У элементов не подэлеметов, если есть вложенные елементы то они все к блоку относятся, поэтому у всех элементов один постфикс block-name__element-name
а не несколько block-name__element1-name__element2-name
Вот у тебя СПА с зашитыми в компонеты стилями, тут вдруг приходит Кабан Кабаныч и говорит нечеловеческим голосом
- Сычов. Купили мы Быстрикс24, лендосы будем делать там, чтобы вести клиентов в воронке продаж. Захуярь в них наш копроративный стиль!
Поридж малиновый, Кабаныч не твоя мамка, он не спросит на чем тебе нравится очередной фронтенд делать. Или будешь по нищим галерам бегать, убегая от задач серьезногу бизнесу.
Посоветуй какие-нибудь?
Мне нужно сделать кнопку, при нажатии на которую справа выплывет окошко с текстом (примерно изобразил на пике)
Я понимаю, что надо эвент клика, #кнопка:after, но дальше неебу, совсем тупик
Помогите, пожалуйста!
хуево гуглил.
нахуй там афтер?
кнопка.евентклика(клик, евент => {
блокТекста.добавляешьКласс(Актив)
})
ну а если нужен афтер то этой же кнопке и дававй акитив, у кнопки есть стили и эти стили афтера идут у актива.
Если ты не тот анон с дропдауном, то вот https://html5css.ru/css/css_tooltip.php первая ссылка в гугле с летсдуит, не стукойте.
А так идея как с дропдаунами.
Сынок, я не в РФ. Конечно, если Джон Бор скажет что БЭМ нужен - то я буду делать на этом говне, или на любом другом но пока он что-то популярностью не пользуется.
Я более-менее понимаю план действий, мне нужен скорее support & assistance. Сейчас двигаюсь по роадмапу https://roadmap.sh/frontend в котором половину всего я и так достаточно глубоко знаю, а про остальную половину имею представление.
Посоветуйте каких-нибудь специальных макетов для обучения верстке от простых к сложным. Может знаете какие-то ресурсы, которые мне будут полезны. Если захотите поменторить, вот телега @perdaxx
Пчел, ты двигаешься в обратном направлении. Верстают пускай вкатуны-джуниоры, а ты лучше развивайся дальше в бекенд и инфраструктуру. Базы данных там, клауд ф-ции, лоад балансеры, кластер разверни и тд. Нахрен тебе нужно кнопки красить?
> быкенд с апишкой на джанге я смогу поднять за 30 минут, то сверстать страничку у меня займет 1-2 дня, особенно если ебаться с инструментарием на ноде. И реализовано это все будет кое-как, с кучей костылей на CSS
Это норма.
Мне для себя нужно. У меня периодически возникают идеи которые хочется реализовать, вот например из последнего - сделать инструмент управления трафиком, с роутингом трафика между различными прокси / VPN, с мониторингом, блекджеком и прочим. Писюн падает когда представляю как я это все верстать буду
Есть же UI киты, попробуй из них собирать страницы
>сверстать страничку у меня займет 1-2 дня
ну, это норм.
т.е. у скилового версталы вротендера простенькая стр занимает +- день, но на более сложные уходит и больше.
при этом, как я понял, ты делаешь для себя, т.е. ты не обременен необходимостью делать пиксель перфект.
пиксель перфект же - это когда ты должен сделать верстку идентично как на макете в разных размерах.
по этой причине верстка не такая уж и быстрая работа.
+ васянские либы, которые приходится пердолить под разные устройства, т.к. внезапно, они имеют кучу кастылей и условностей.
так что не совсем ясно зачем тебе ментор. и не совсем понятен бугурт про долгую верстку.
допустим на пик я бы взял 3 дня. самая простая верстка с простейшей тестовой логикой. скорее всего управился бы и за день, но нахуй об этом знать пму?
Так начни делать просто. Сначала консольный интерфейс, веб оставь на потом.
> Писюн падает когда представляю как я это все верстать буду
Это норма.
Иными словами мне придется каждый раз в теле каждого метода перед его выполнением проверять
if (this.canceled) { return }
Но чё-то такое себе. А если мне к примеру придется как-то изменить то что внутри курли брейсов {}? Есть в JS'е декораторы как в питоне, чтобы я мог обернуть все свои методы типо
@stopcondition
function start() {}
@stopcondition
function doThing() {}
?
Как вообще лучше обустраивать отмену работы какой-то хуйни?
Обосрался немного, у метода не будет function, это же метод.
https://babeljs.io/docs/babel-plugin-proposal-decorators
https://www.typescriptlang.org/docs/handbook/decorators.html
Вообще странно, что ты задался мыслью делать проверки только внутри класса. То есть в UI ты никак не отображаешь процесс выполнения и кнопки не повязаны к текущему состоянию экземпляра? То есть кнопки всегда доступны к нажатию?
Ну а вообще, декораторы прикрутить можно, может однажды они уже докатятся в одну из версий JS нативно. В принципе, ничего плохого не вижу, если ты хочешь добавить валидацию внутри класса, но что-то есть чувство, что что-то пошло не так.
Более-менее важен. Люблю Material UI, чтоб вот эти анимации форм/кнопок были как в ведроиде. Я так однажды сделал неплохой интерфейс с помощью Vue + Material UI, 3 дня на это потратил
Мне тайпскрипт не подходит, у меня юзерскрипт. Там приходится на чистом жсе всё писать.
У меня по сути одна кнопка условно "Начать работу" при нажатии на которую совершается целый пласт действий с разными методами. В любом момент пользователь может нажать "Прекратить работу" и мне нужно прервать все действия и окатить до начала. По сути хватает обычного ретурна, скорее всего, по крайней мере с ретурном вроде как работает всё. Но ощущение костыльности присутствует.
Ох, вспомнил как пытался сделать вращающуюся кнопку обновления, пиздос как наебался с тем чтоб она ровно вращалась и стейт "вращается/не вращается" нормально отрабатывал. Я кажись так и не смог нормально останавливать вращение
Можно сделать обёртку и на ванилле.
Либо функцию с предусловием и костыль вида
leggo() {
this.isRunnable() && doTheJob() // IIFE
}
isRunnable() { ... }
Если по отмене, можешь посмотреть вот это
https://developer.mozilla.org/en-US/docs/Web/API/AbortController
Контролелр прикольная штука, благодарю.
А обертку в каком виде? Типо написать декоратор, а потом вручную после того как создал инстанс класса прописывать инстанс.метод = декоратор(метод)? Можно конечно, но хз. А с функцией я не очень понял к сожалению.
Сейчас я пока решил тупо вставлять if (this.isCanceled) { return } в начало, пока работает вроде.
Декоратор в простом виде можно накостылить по тип такого:
deco(func, ...args) {
console.log("'decorator'")
func.apply(this, args)
}
Принимает функцию и произвольное количество аргументов, вызывает функцию в контексте объекта, с которого был вызван.
В твоём случае может быть что-то вроде:
deco(foo) {
console.log("deco checks");
foo.call(this)
}
hueta(text) {
this.deco(function () { console. log(text)})
}
С функцией если, то у тебя будет отдельный метод в котором будут проверки на возможность выполнения, например
isRunnable() { return this.isCanceled }
Сейчас здесь ничего нет, одно поле для ИФА, но потом может появиться дополнительная логика. В этом случае достаточно будет поправить только его.
Этот метод ты вызываешь по цепочке
this.isRunnable() && (function () { actualJob here }) ()
Либо если это переписать, аналогично на ифы
if (this.isRunnable()) {
do actual job here
}
Декоратор в простом виде можно накостылить по тип такого:
deco(func, ...args) {
console.log("'decorator'")
func.apply(this, args)
}
Принимает функцию и произвольное количество аргументов, вызывает функцию в контексте объекта, с которого был вызван.
В твоём случае может быть что-то вроде:
deco(foo) {
console.log("deco checks");
foo.call(this)
}
hueta(text) {
this.deco(function () { console. log(text)})
}
С функцией если, то у тебя будет отдельный метод в котором будут проверки на возможность выполнения, например
isRunnable() { return this.isCanceled }
Сейчас здесь ничего нет, одно поле для ИФА, но потом может появиться дополнительная логика. В этом случае достаточно будет поправить только его.
Этот метод ты вызываешь по цепочке
this.isRunnable() && (function () { actualJob here }) ()
Либо если это переписать, аналогично на ифы
if (this.isRunnable()) {
do actual job here
}
Вообще классы, методы, можно такую проверку на возможность выполнения вынести в геттер, раз на то пошло
И да, я проебался немного, здесь это уже не совсем декоратор, скорее обёртка
Окей, понял. Ну в принципе это действительно обертка, декоратор должен возвращать обертку в которой уже перед вызовом основной функции выполняется какая-то фигня.
Нужно же как-то узнать с каким постом ассоциирована кнопка.
Вообще ты прав, будет логичнее пойти по пути Express -> Nest
К сожалению на самом верху древа. Я тоже хотел определить по положению ноды.
Я что-то не понимаю. Кнопка, которая относится к посту, не рендерится в шапке поста? Это где такое? Ща на даче посмотрел, там эта кнопка в диве с айдишкой номера поста.
мимо не шарю за ваш куклоскрипт
Нет, судя по всему она рендерится на верху древа и через абсолютное позиционирование css'а подгоняется под пост. Мда, боюсь тут придётся сильно костылить.
чел, в отладчике "ответить" вот так показывается, попробуй так же
на самой кнопке открытия меню data- атрибут, скорее всего запоминает его глобально при клике или хз какая макака это сочиняла
это норма, модальные окна обычно внизу дерева и рисуют, чтобы они поверх всего отображались и быстро добавлялись\удалялись из дома
У меня почему-то нихуя не показывается. Только на созданную менюшку ивент навешан.
Ну а то что у тебя на скрине, там скорее всего обращение к локальным переменным, в моём же контексте не будет ни к каким айидникам и намам доступа. Глобальной переменной такой нет. Хуй знает как адекватно без изъебов получить пост при кнопке.
Исходники куклоскрипта посмотри, как он хэндлит ивенты этих менюх.
Попробуй let user = (item) => { return users.find(item).id == 1 }
Питухонер мимокрок, на калжсе почти не писал
Пиздец нахуй, разобрался. Точнее решил прочитать дальше строчку ниже в учебнике. Найс объяснение, ставлю лайк. Сперва сотворим хуйню, а потом расскажем, что было сделано.
Да теперь я уж понял, что функция просто передаётся в качестве аргумента.
А потом ты познаешь мир с "вот вам удочка под видом базуки, дудоньтесь сами". А ты и уже сгорел, кекв.
вообще можно и на саму кнопку евент повешать, потому что таймаутом все равно новую таску в конец добавляю, поэтому еще проще
Я так понял чтобы у меня это работало я должен сделать по сути также, но первый ивент навесить onmouseover ну и в свою модаль прикрепить кнопку с сохранением поста после таймаута 100мс к примеру, чтобы модаль успела появиться.
Я только не понял зачем ты < 0 проверяешь а потом ретурнишь, это чтобы избежать что?
Хотя в теории можно проверку сделать есть ли эта кнопка уже или нет. Придется мутейшен обсервер навесить чтобы новым постам ивент прибавлялся тоже. Чет немного гемор, но это лучше чем я представлял.
В функцию надо передать аргумент, который обрабатывается.
Может оценишь вариант подумать пять сек, а не спамить вопросы на каждый пук?
Я в метод передал функцию в качестве аргумента. Хуле ему не нравится? Почему он не может Васю найти?
Посмотри что передаётся в findIndex, что передаётся в то что передаётся в findIndex, посмотри что ты написал в том что передал в findIndex. Посмотри описание findIndex на mdn.
> найти индекс в users, users (массив).name (undefined) == "Уасиа"
кекусы
Найс, анон, оно работает, спасибо. Не знал что mouseover только один раз екзеклютится. Я думал каждый раз когда по элементу буду проводить он каждый раз будет привязанную функцию запускать.
а почему ты на клик не хочешь привязаться? Если кликнешь - модалка точно появится, а если просто водишь - не факт.
Так у меня, как ты можешь заметить на видео, менюшка автоматически открывается, так в кукле сделано. На клик нет смысл привязываться, не особо получится. Каждый раз когда я навожусь, менюшка открывается.
Даже если исправить на user.name что в ретёрне, что в алёрте, нихуя не меняется - возвращается андефайнд. Блять, да какого хуя, всё же нормально выглядит.
Ехал юзер через юзер.
Анон, а ты не знаешь почему я всплывающую форму не могу открыть? Я знаю что у свг нет клика, поэтому диспатчу ивент, но он не хочет.
Довен, твоей аргументной функции файнд будет передавать значения на проверку, а она нихя не принимает.
Наркоман чтоле?
Чем твоя стрелочная функция отличается от обычной, которую ты пытаешься передать?
У стрелочной функции нет названия, ты принимаешь параметром user элемент массива.
Во втором случае ты обзывает функцию user и нихуя в неё из массива при проходе findIndex не принимаешь.
Нарабатывай навыки дебаггинга и гугления. Суй хотя бы промежуточные console.log и выводи значения переменных если не понимаешь что там не так.
Я тебе предложил посмотреть findIndex на mdn. Ты посмотрел? Нет. А там расписана сигнатура функции и есть примеры.
Навыки гугления я за тебя тоже не смогу наработать.
Может потому что через jquery эвенты накинуты, попробуй через него и вызывать.
Кстати, новые посты сами подпишутся на эвент, если через него сделашь.
БЛЯТЬ АНОНЫ ОНО СРАБОТАЛО
Мне страшно нахуй, эта хуйня отлично понимает меня, запоминает что было до этого и МОМЕНТАЛЬНО генерирует ответ. Я раньше не пользовался чатгпт, зарегал на всякий случай. Сейчас решил воспользоваться и охуел.
Анон, мне сетка подсказала таким образом ивент инициализировать. Я не понял нихуя почему это сработало, но оно работает.
Забыл показать третий вопрос свой
Анон, я сейчас понял что я хуйню пытался сделать и можно просто спокойно на ссылку кликать, а не свг, эффект тот же почти, а также проще.
Ну и к слову по какой-то причине триггер не работает. А штука которую чатгпт дала и которая работает на свг почему-то отмечена как устаревшая. Как тогда не депрекейтед способом вызвать клик событие интересно на конкретно этот свг?
Я чет совсем нуб
получается что-то вроде:
btn.addEventListener (click, event => {
textBlock.addClass ( а что сюда добавлять? )
})
promise.then (function(arg1) {console.log('___testname___', arg1.name)});
promise.then (function(arg1) {console.log('___test___', arg1)});
setTimeout(function () {promise.then (function(arg1) {console.log('___timertest___', arg1.name)});}, 3000);
Четыре строки подряд. Первая выдает готовый object, в котором естественно заполнено property "name".
Вторая выдает undefined
Третья - опять же готовый object, в котором точно так же присутствует не пустое property "name".
Четвертая сука выдает что я хочу получить, значение property "name".
Чяднт?? Пытаюсь разобраться, поэтому подряд это написал, а понятнее не стало. Если then ждет пока promise не исполнится, почему я не могу получить сразу значение property, но могу корректно получить весь object целиком?
Потому что чтобы что-то достать по цепочке, надо это что-то из функции вернуть.
console.log возвращает undefined, его ты и получаешь.
promise.then(function (resolvedData) {
console.log('hurts moe');
return resolvedData.name;
}).then(function (name) { console.log(name) })
>>30638
> console.log возвращает undefined
Проебался. Так то оно так, только ты нихуя не возвращаешь, а это аналогично если написать строке
return; //и тоже вернёт undefined
И да, с этим согласен >>30640
А лучше уж залей в песочницу если тебя гложет что-то. Проёбано форматирование не помогает понять что ты делаешь.
В русских продуктах плотят так же или меньше, если что. Если конечно, мы не берём случаи с зарплатой в виде крипты на карту армянского банка.
Ты делаешь что-то не то.
const p = Promise.resolve({ name: "ahem"})
p.then(arg => console.log(1, arg))
p.then(arg => console.log(2, arg.name))
p.then(arg => console.log(3, arg.nаmе))
На второй строке name на инглише.
На третьей a и e - кириллица
Так и моя галера - огрызок в виде российского офиса, сама компания отчалила. И по деньгам уже ниже рыночка, + всякие приколы начались с увеличением интервалов между пересмотрами до года. А год гребли ниже рынка для меня это порядка 200к потерять.
Ух бля, нажористо.
Ну хуй знает, я как свалил перед СВО с галеры, так за год ничего не апнул. Робота есть и слава богу.
Куда уж концентрированней.
дурачок что ли? :)
что ты несёшь?
useEffect всё-таки вызывается после рендера
>Адаптивная вёрстка
+ мне нужно знать сколько у клиента ширина окна, чтобы отправить ему отрендеренную страницу с сервера nextjs
Год самостоятельного обучения. Сейчас стек:
фронт: react на next, mobx, axios, sass;
бэк: express, prisma, postgres.
Пробовал: nest, redux, RTK query (непонтно и попа болит), sequelize, jwt, react из коробки с SSR
Из достойных петпроектов - уродливый но агрегатор новостей, с динамическим роутингом и админкой для создания, редактирования и удаления статей + редактор метатегов для каждой страницы. Админка на jwt токена.
useEffect вызывается после вмонтирования, а не до, так что такое не прокатит.
лучше не читай, это та еще хуета.
Выглядит так будто все описанное ты потыкал но ни в чем толково не работаешь.
Так посмотри в реквесте, что там клиент отправляет.
Еще подумай как ты будешь менять размеры при ресайзе?
Это на самом деле делается в css и на клиенте само адаптивно ресайзится по правилам.
Благодарю.
Скорее проблема в том что я даже не могу заставить условие event.ctrlKey && event.keyCode === 13 отработать. Оно никогда не отрабатывает у меня в форме. Он работает если сделать иф только на нажатие ctrl к примеру, или enter. А как заставить его отследить ctrl+enter? Он сразу же отправляет форму и не реагирует на условие, как будто ивент просто не проходит.
Здесь я обосрался кажись но сути не меняет, он с исправленным вариантом тоже не работает.
<button>Click</button>
const btn = document.querySelector("button");
btn.addEventListener("click", (event) => {
if (btn.classList.contains("clicked")) {
btn.classList.remove("clicked");
} else {
btn.classList.add("clicked");
}
});
button {
position: relative;
}
button.clicked::after {
content: "clicked content";
position: absolute;
border: 1px solid red;
margin: 0px 10px;
width: 100px;
}
888x1116, 0:09
На addEventListener ругается, 'Cannot read properties of null'
Уже засунул в windows.onload, перемещал script src и всякие другие танцы с бубном
С чем может быть связано?
ресайз хук уже сделал, а вот как в реквесте посмотреть именно данные окна я не представляю
Ну я на скринах показал как я пытался ивент привязать, при комбинации ctrl enter он не хотел отрабатывать.
А мог бы сразу увидеть все свойства события code, key, keyCode, which, ctrl и тпх.
Вместо того, чтобы подбирать комбинацию.
Да
Ну суть в том, что у меня страница с контактами и иконка телеги, при нажатии на которую я хочу, чтобы выкатывался ник
йобаный рот
нет, беда в двойных кавычках, в которые я заносил айди
ну я пень канеш. Спасибо, Аноны!
при рендере компонента у инпута автоматически выставляется фокус и в нём появляется курсор
>autoFocus: A boolean. If true, React will focus the element on mount
Забытые технологии предков.
"Опять чортики за меня текст вводят и по клавиатуре прыгают"!
Имею в виду такую ситуацию, например, нужно отредактировать какой-то элемент, я запускаю локалхост и ищу его классы через код элемента, а потом вставляю в поиск по проекту. Как правильно это делать то?
Куда уж проще, даже пароли в базе не надо хранить.
Ну давай видос запишу. Он отрабатывает только одиночные нажатия.
1920x1080, 1:56
Одиночное нажатие: (интер)
Комбинация ктрл + интер:
576x1024, 0:10
Сейчас пойду смотреть ролики по второму кругу, но всё равно тяжеловато.
Какое практическое значение они имеют? Какие новые возможности открывают классы, например?
В чём фундаментальное отличие классов от просто создания класса через const class = new Class (); ?
Спасибо за помощь
Чтобы ООП понять надо джаву изучать, или шарп.
Что рекомендую, кстати, хотя бы в базе.
Концепцию функционального программирования в джаве я начал более-менее понимать окольными путями именно через джаваскрипт, а весьма своеобразную джаваскриптовую логику в свою очередь - через ООП и строго-типовый подход Java и потом TS.
Не звучит так, что ты знаешь что такое прототипы, зачем они нужны в JS и что такое ёбаное прототипное наследование.
Классы не убирают из JS прототипы, но работать с классами в разы приятнее, чем настраивать цепочки прототипного наследования и что-то там довешивать на прототипы.
>>32304
TS не серебряная пуля, которая решает все проблемы JS. Статическкю типизацию добавляет - да, и это охуенно. Классы? Те же классы только ещё и модификаторы доступа и помимо наследования можно реализовывать типы/интерфейсы.
Ну, поверхностно, скорее. Сама тема классов нетрудная (ну, наверное), просто яннп зачем такая сложность с кодом, если те же вещи можно сделать проще
>>32317
Хм, интересненько. Я правда не знаю, что такое прототипное наследование, просто прохожу оффлайн курс, на котором мне вкидывают задачи. До этих пор всё было +- понятно, а теперь уже трабл
Мне кажется это из-за того что текстареа внутри формы и сам браузер не дает. Мб попробую ещ5
Класс это сахар над прототипами и конструкторами. Просто так писать удобнее и на жабу похоже, можно любителей ооп садить на жс писать, авось и не заметят.
Да хуйня блять, ничего не выходит. Я не понимаю как это сделать. Мне нужно предотвратить дефолтное поведение на ктрл+ентер, чтобы он не отправлял запрос, поэтому я хочу отловить этот ивент и навесить свой. Чтобы я мог перед тем как пост отправится совершить манипуляции.
У меня комбинации с ctrl нормально отрабатывают. Что ты имеешь в виду под "дефолтным поведением"? Попробуй просто ctrl отловить и сделать preventDefault, действия типы выделения будут игнориться, но ctrl enter по прежнему работать.
Он отрабатывает ctrl но после него enter уже не отработает а запустит сабмит формы. Я пришёл к тому что тут дело в ивентах нажатия. Нужно работать с самой формой и конкретно ивентом "submit".
Я сейчас всё пытаюсь понять как мне сделать так, чтобы мой ивент отработался до остальных ивентов.
Тут submit может быть вообще никак не задействовано. Может и просто комбинация отлавливаться, по ней посылаться запрос, много вариантов.
>Я сейчас всё пытаюсь понять как мне сделать так, чтобы мой ивент отработался до остальных ивентов.
Хз, наверно такое и не сделать никак, твой листенер добавится после загрузки страницы, и stopPropagation уже не будет никак влиять. Перехватить базовый addEventListener опять же тоже не выйдет.
Я уже выяснил что как раз в сабмите дело. Там навешен jQuery ивент который не останавливается обычным stopImmediatePropagation в addEventListener. Сейчас проблема в другом, он теперь ждёт выполнения моего хендлера (пик) но потом просто зависает намертво и не выполняет отправляет форму.
в отладке скачивается, если долго подождать, т.е. все работает надо только синхронизировать.
возвращай из fetch_images массив промисов, на Promise.all добавляй then, в обработчике качай файл
Простой парсер сможешь сделать на Питоне + библиотека requests и ещё может быть beautiful soup
Ещё есть Selenium
Минимум сотку, да. Но это при условии, что хотя бы минимальные софт скиллы есть.
Бля, только спустя 3 часа понял почему у меня происходят проблемы. Ивенты запускаются в том порядке, в котором были добавлены. Я все время думал что последний добавленный ивент (мой) будет запускаться первым.
Тогда я хуй знает как сделать так чтобы мой ивент запускался первым, пойду гуглить.
Получилось. Как же я заебался.
Вешаю ивент в режиме захвата (capturing) на родительский элемент, чтобы он уж точно был первым. Отменяю дефолтное поведение чтобы не редиректило. Отменяю моментальный пропагейшен чтобы все ждали пока мой ивент завершится.
После этого, по какой-то причине, я всё ещё уходил в вечную загрузку (пик4). Не понимаю что мешало остальным ивентам отрабать как надо после моего. Но я вручную вызываю сабмит формы через jQuery чтобы все связанные ивенты с ней отработали ($(temp1).submit()).
Единственное что я не очень понял:
1. Почему мой ивент не отработался вслед за остальными ивентами, вызвал вечный цикл? Когда я вешал схожий ивент на саму форму, случался цикл, понятно почему. Неужели там отрабатываются только те ивенты которые непосредственно связанны с элементом (формой)?
2. Чем может быть вызвана вечная загрузка, из-за которой мне пришлось вручную сабмитить форму? Если мой ивент выполняется в режиме захвата перед всеми дочерними ивентами самой формы, по идее ничего не должно было помешать им отработать как надо? Единственная догадка так это то, что выше моего родительского элемента по ДОМу есть ивент, который также отрабатывается в режиме захвата. Этим может быть объяснено, почему я также вижу окно загрузки (пик4) в момент отработки моего ивента.
Его надо глобально установить и поебаться с package.json'ом. Ну у меня так было. Сделал небольшой скрипт, который создаёт структуру папок для nextJS приложения. И работает через командную строку.
"type": "module",
"main": "./bin/index.js",
"scripts": {
"start": "node index.js"
},
"bin": {
"next-struct": "./bin/index.js" // next-struct- ключевое слово для командной строки, как tsc у тайпскрипта
},
У меня так заработало.
Поясните разницу между broadcastchannel и shared worker
Аноны, мне бы ОЧЕНЬ хотелось написать первый скрин из этого поста без использования jQuery. Но я перерыл весь гугл и не понимаю как. Все способы вызвать форму, будь то form,submit(), или form.dispatchEvent(new Event(''submit'')) редиректят на страницу с запросом. Может если я диспатчну ивент клика на кнопку реплая то такого не будет, но что-то мне подсказывает что тогда то я попаду в бесконечный цикл сабмита формы.
Если сайт простой, то express + cheerio, если там SPA с защитой от парсеров, капчей, клаудфлэром и т.д., тогда тебе нужен headless browser типа puppeteer, который будет у тебя вместо cheerio, он будет притворяться реальным юзером, заходящим на сайт через хром. Сам делал стесловые краулеры на puppeteer, как вариант ещё можно подрубить доджинг банов по айпи через специальный сервис от AWS https://github.com/Ge0rg3/requests-ip-rotator
У меня все работает, но когда запускаю через npm - оно одупляется две секунды, а через node - запускается моментально. Хотя в package json буквально эта же команда записана.
Запускай через node.
помогло.
Подобная хуйня есть у букмекеров с вилками, они выявляют таких умников и банят.
Ну вот на это можешь взглянуть:
https://www.youtube.com/watch?v=0MEpPU3rWCk
Если ты новичок, то вряд ли осилишь, но общее представление, думаю, можно получить.
Он там много чего рассказывает. Узнаешь про апи ключи и всё такое. Думаю, полезно будет.
Я никак понять не могу. Это я чего-то не знаю, как оно работает, или это баг в ИДЕ
Помогите вытянуть отсюда url для фубара чтобы слушать радио не в браузере
https://rey.fm/
на всё что получалось пишет - нет прав
лан пох неважно, нашёл сайт который это делает.
Аноны, а javascript.info полностью покрывает темы по чистому JS, которые могут спрашивать на собесах?
Смотря какие собесы. Последний раз когда заходил там дохуя всего было, для вкатуна за глаза.
Не очень понял к чему это, у формы и так пост метод. И экшен указан, она редиректит по этому экшену.
Что здесь понимается под "рендерингом"? Фаза рендера, когда WIP файбер-дерева сравнивается с текущим? Или некоторое общее понятие?
Ладно, для двача это видимо не вариант ебаться, хочется просто препроцессинг перед отправкой сделать и потом дать уже навешанным ивентам отработать после моего, а не в обход них совершать постинг. Видимо лучше $(form).submit() нет.
Спасибо огромное за ответ.
>вкатиться можно и чисто версталой без жса.
А это как? Это под CMS'ки вёрстка шаблона?
>шаблона
типо. но таких вакансий меньше чем на ангуляр из-за той же специфичности.
пробуйся на вакансии, записывай где ты проебался и изучай это.
проебываться ты будешь далеко не один раз.
Благодарю, буду очень стараться
когда другим питоном грепал, то словил таймаут соединения. может надо рефетчить после такого, потому само это не происходит?
>когда питоном скрапил, то словил таймаут соединения. может надо рефетчить после такого, потому что самостоятельно это не происходит?
Под рендерингом понимается запуск функции-компонента. Она не должна менять стейт. Только функции могут его менять.
хтмл ксс жс.
Столько же костылей мне нужно для юзерскрипта. Почему блять просто нельзя соверашть синхронные запросы?
Ладно, я разобрался чуть с промисами и жизнь стала легче. Но всё равно такое себе. Вдруг если один промис задержится и у меня все наебнется.
micro task queue
Подскажите как сделать в итоге эти связки, брать данные с сайтов парсить их, react node js sql подойдут?
Там была типичная проблема 1 в 1 как на скрине. У меня класс разбит на методы, я создал небольшой метод чтобы получать жсон. Чтобы потом возвращать значение. Теперь мне приходится все тело метода оборачивать в промис и возвращать его, а в промисе резолвить значение финальное. И на самой верхушке прописывать then.
Тогда мне придется асинки проставлять вплоть до самого верха абстракции, это полная хуйня.
Либо ты пишешь что за фреймворк, либо я говорю что ты промахнулся трудом со своим спрингом.
Зачем? Один раз только, кроме самого метода. Указать асинк перед той функцией, где метод вызывается
Блять, как я вообще к вам попал...
Спиздили лет 30 назад имя на хайпе, теперь ошибаются люди в тредах...
А, асинхронные методы/функции я так понял по дефолту промис вовзращают и мне не нужно вручную их городить? Также then на самом верху возвращать? Ну, можно попробовать.
> Указать асинк перед той функцией, где метод вызывается
Или если ты про то чтобы использовать await то нет. Мне придётся указать для того метода который вызывает мой асинк ментод а затем для того метода который вызывает мой асинк метод который вызывает мой асинк метод, затем асинк для метода который вызывает остальные методы, затем асинк для мейн функции которая вызовет мой асинк метод который вызовет остальные асинк методы по цепочке.
Ты же понимаешь что писать await тебе нужно только если тебе внутри функции нужно дождаться выполнения другой функции?
Если у тебя есть скажем асинхронная fetchUpdates(), то ты можешь вызвать ее без await если тебе надо просто чтобы она вызвалась.
await нужен если ты делаешь что то с результатом функции
const res = await fetchUpdates()
doSomethingWithResult(res)
Если при всем при этом у тебя настолько длинная цепочка await-ов то ты как то не так код организуешь.
Ну у меня сейчас так выглядит. Я не очень уверен что понимаю как правильно сюда асинхронность прикрутить.
О, благодарю, что-то не подумал вынести таким образом fooBar. Ну в принципе, в теории не мне нужно обязательно ждать пока foo отработет, так что можно его не эвейтить, тогда будет работать также как и с промисами, только с меньшим говнокодом.
Вот никак не пойму таких токсичных неосиляторов.
Спрашивают хуй пойми что, а на логичный вопрос хули он хочет, начинает огрызаться и токсичить.
Ебанат, если ссылка на сайт для тебя - это верх пояснение вопроса, то пошел ты нахуй.
Ебанат, если ты не можешь разобраться какой стек тебе нужен для верстки - пошел на хуй.
Ебанат, чтобы ответить на твой вопрос я по твоему должен исследовать все возможные варианты которые ты имел в виду в своем вопросе дабы ты ответил потом: "Я не это имел в виду" - пошел на хуй.
Ну и просто пошел на хуй.
Ну так он промолчит, остальные промолчат.
Твой пост уже был красным флагом, а тут ещё и прямое подтверждение твой токсичной шизе:
> кукареку ку-дах тах-тах
>связки
А, ну же очевидно как ее решить:
Mashinnoe_obuchenie_algoritmy_dlya_biznesa_2019_Markos_Lopez_de_Prado.pdf
Да это просто Быдло. Типочек. Пацанчик. Кент. Кабанчик. и тд.
Его мнение о вещах составлено из пацанской субкультурки.
Он считает что
- в интернете есть ответы на все вопросы.
- одни более ровные дяди скрывают "темки" от других дядей и вообще всяких лохов.
К сожалению, не все так примитивно.
Книжечка бесполезная, но все равно рекомендую к ознакомлению просто для кругозорчика.
Есть, кто ковырялся в этой версии?
Пока что только в миддлваре, потом запилят, написано в доке ж.
>Пока что только в миддлваре
А как его подключать? Вот у меня есть handler который обрабатывает request resonse, который встанавливает куку. Куда мне вставить эту функцию (или файл с экспортом её) в структуре? Раньше в pages, а сейчас как? Или этот хэндлер - это не мидлвар? Или мидлвары по-другому подключаются?
Пока формулировал вопрос, решил посмотреть старую доку и нашёл ответ на вопрос. Надо чаще с собой общаться, задавать себе вопросы и т.д.
Так вот кто нам баблишко заносит! А я-то думал, кто ж эти уебаны, и всё никак не заканчиваются! А это машинное обучение - во как!
>algoritmy_dlya_biznesa
КИБЕРНЕТИКА!!!
Пока вижу вариант объявить класс с Get/Set и там внутри уже обращаться к нужному полю, типа:
get displayName() {
return this.data["dp"];
}
Тебя сжатие названия ключей даст выигрыш в пару мегабайт? Выглядит как экономия на списках ради оверхеда в вычислениях.
Если тебе нужно экономить, то жсон тебе не нужен, он неэффективен, кодируй по-другом, ключи храни статично.
А вообще просто напиши что-то типа
const readable = (optimiszed) => ( {abcd:optimized['a' ], efgh:optimized['e' ] })
Взляните вот на это:
https://codesandbox.io/s/zealous-roman-sqcnre?file=/src/App.js
Есть лист с постами, у каждого поста есть меню. При открытии меню ВСЕ посты рендерятся заново.
Но нужно пере-рендеривать только 1 пост, который меняется.
Что тут можно сделать, кроме добавления состояния в каждый пост?
Всякие memo сюда не подходят, потому что или состояние меняется или пропсы меняются.
Мемо будет работать если правильно сделать.
https://codesandbox.io/s/vigorous-keller-7gtf5d?file=/src/App.js
И если что класть дочерние компоненты внутри рендер функции нельзя, это одна из грубейших ошибок в реакте.
Ты какую-то хуйню спизданул. Что тогда делают паттерны render props или HOC? А для чего this.props.chldren. А как по твоему реакт роутер декларативно конфигурируется? Тысячи примеров
другой мимокрок
Дебич, посмотри на пример кода в посте на который я ответил.
Тайпскрипт это жабаскрипт, но с подписанными типами для статической проверки, всё что работает в одном, работает в другом, просто тайпскрипт может ругаться если ты хуйню пишешь.
Да, я знаю. Но он же приучает к правильному мышлению с его типизацией. Насколько критично, если я сразу начну учить TS, пропустив JS? Всё же в некоторых моментах, кроме типизации он отличается, как я понял
задай себе логичный вопрос, сможешь ли ты после тса просто взять и писать на жсе?
проще жс. потом тс. т.к. не везде используется тс.
рекат потому что много вакух и можно на тяп-ляп сделать что-то побыстрому.
ангуляр потому что меньше вакух, но аппы делают на нем большие и с правильным подходом к разработке.
Чуда он не сделает. Если будешь писать js как будто это язык со строгой типизацией по правилам одна переменная - один тип плюс избегать слишком динамические фичи (вроде той же рефлексии), то код действительно будет на уровне. Но никто из жс-кодеров с этим не заморачивается, а потому получается что есть.
А в каких сферах они чаще используются?
Я раньше думал, они слишком разные, но по сути там же нужны схожие знания
- глубокое знание JS
- TS
- Redux
- тестирование
В Angular еще есть RxJS и Observables, я пока не шарю за это, но в React это по-любому как-нибудь применяется.
Получается, лучше выучить один, потом другой, либо оба сразу? Или лучше сосредоточиться на чем-то одном?
Анонище, спасибище. На таких тред держится!
>И если что класть дочерние компоненты внутри рендер функции нельзя, это одна из грубейших ошибок в реакте.
А почитать про это можно чо-нить? Не могу чет найти ничего.
Транспилируется, а чтобы понять какие кейсы статика в ТС не покроет, надо навернуть говна сначала, чтобы понимать как оно работает и когда в рантайме твой транспилированный ЖЫЭС отвалится.
Ты не будешь постоянно проверять типы через typeof govnomocha - потому что это костылтная логика, выглядит с ифчиками уёбищно, JS [TS] всё равно норовит наебать с неявным преведением типов, да и пацаны засмеют и дизлайк на МР поставят, а потом на кухне отпиздят пока никто не видит.
>А в каких сферах они чаще используются?
сайты, приложения на телефон и десктоп приложения.
для обезьяны они одинаковые. различия в разработки не такие уж и большие.
сосредоточиться на чем-то одном. остальные фреймворки после легче зайдут. т.к. почти то же самое.
например я с ангуляра на вью за вечер залетел, офк многого не знал, но для работы покурить доку и сделать тудушку хватило, чтобы разобраться как и что писать.
>>А в каких сферах они чаще используются?
рякт чаще всего мелкие-средние сайты, но можно и тырпрайз (можно и на нативе тырпрайз, но оно вам надо?).
ангуляр чаще всего средние-большие и тырпрайз.
Если хочешь сделать сайт с топовым UX как на алиэксресс.
та же хуйня что и с реактом но лично для моих глаз приятнее.
вакух меньше чем на рякт, но либо больше чем на ангуляр, либо меньше.
Чтобы выбрать реакт или другую фейсбучную технологию, нужно быть гиперкомформым омежкой, для которого главное шоб как у всех. Реакт выбирают крестьяне, которые случайно вкатились в айти. Инженеры выбирают ангуляр или вуе. Даже китайский вуе внутренне намного технологичнее реакта. Реакт это библиотека для рендеринга jsx, разработчикам которой пох на производительность, главное чтобы было декларативненько, а то недавноиспеченые из крестьян хипстерки не оценят.
Для этого и придумали отделение логики и представления. Я всегда начинаю с логики, пишу на логику тесты, натягиваю контроллеры и уже потом верстаю страницы. А то есть умники которые сверстали странички и типа довольны. Морда не нужна без функций. Плюс если ты начинаешь верстать с морды, у тебя возникает ложное впечатление будто ты умный, а на деле ты ничего не сделал. Это ведет к прокрастинации.
Делаешь абстрактный класс Канселлабле и от него наследуешься. Потом вызываешь супер. Тогда весь повторяющийся код будет там что то делать перед твоим куском кода и не трогать твои функции.
Если знать принципы гридов, когда юзать паддинг а когда маржин, твой пикрелейтед верстается примерно за 4 часа. Если ты знаешь все баги, клирфикс наизусть, то вообще за пару часов. Это при условии что ты не будешь гуглить как исправить какой-то мелкий баг например текст не идет на новую строку.
Накидываешь/снимаешь класс вращения где анимация задана, в чем проблема? В реакте это делается одним стейтовым хуком.
Ооп на фронте это оксюморон
Вы видите копию треда, сохраненную 13 мая 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.