Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

twolegs

  • 45
    вклад
  • 0
    вопросов
  • 69
    ответов
  • 42%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Можно ли на angular/typescript сделать функцию, которая могла бы возвращать Promise если у неё было вызвано .then либо Observable, при подписке?

    twolegs @twolegs
    Можно написать функцию, которая всегда возвращает Observable. Если необходимо получить промис - просто оборачиваете вызов функции в `firstValueFrom` или `lastValueFrom` из rxjs.

    То, что вы изначально написали, можно решить расширенным Observable, что-то вроде (псевдокод)
    class ObservableWithThen extends Observable {
      then(cb) {
        return firstValueFrom(this).then(cb);
      }
    }


    И в функции вместо обычного Observable создавать и возвращать ObservableWithThen
    Ответ написан 27 янв.
    1 комментарий
    1 комментарий
  • Как запретить Webpack генерировать стили, шаблоны ejs в бандл js?

    twolegs @twolegs
    Вы получаете те файлы, которые указали в entry.
    Я хочу чтобы webpack не генерировал файл `styles.bundle.js` ведь он уже сгенерировал `css/styles.css`,

    Уберите `styles: "./src/css/styles.css"` из entry. По-хорошему вам нужен index.js, внутри которого нужно импортировать весь ваш css. Совсем без js-файла обойтись не получится, т.к. все же главная задача вебпака - это собирать js.
    Так же и с ejs,

    То же самое, убрать все ejs из entrypoints. HtmlWebpackPlugin сгенерирует html по шаблону, в entry ничего дополнительно указывать не надо.
    Ответ написан 26 янв.
    4 комментария
    4 комментария
  • Как остановить setInterval из функции?

    twolegs @twolegs
    setInterval возвращает id таймер, который вам следует сохранять в каком-нибудь поле/переменной. А далее просто clearInterval с сохранным id.
    Ответ написан 26 янв.
    Комментировать
    Комментировать
  • Стоит ли покупать NVIDIA GeForce 8800 GT 512mb в 2021 году?

    twolegs @twolegs
    Совершенно бессмысленная покупка, эта видеокарта в 2021 не может совершенно ничего. Думаю, она сейчас слабее многих встроек в процессор.
    Лучше подкопить на что-то хотя бы уровнем gt 730, в них хотя бы объем видеопамяти уже приличный.
    Ответ написан 01 нояб. 2021
    Комментировать
    Комментировать
  • Аналог use(express node.js) для проброса на контроллеры в spring?

    twolegs @twolegs
    Насколько я понимаю, аналогом экспрессовких мидлвар в спринге будут интерсепторы:
    https://docs.spring.io/spring-framework/docs/curre...
    Ответ написан 28 окт. 2021
    Комментировать
    Комментировать
  • Не вставил ли я себе палки в колеса, перейдя на reselect?

    twolegs @twolegs
    В вашей ситуации reselect избыточен - вам не нужно мемоизировать результаты селекторов. Это не палки в колеса конечно, но на текущий момент абсолютно лишнее.
    Ответ написан 26 окт. 2021
    Комментировать
    Комментировать
  • Как исправить ошибку при запуске webpack serve?

    twolegs @twolegs
    Вы используете конфигурацию для другой версии вебпака. Откройте документацию для вашей версии и скорректируйте конфигурацию дев-сервера (либо установите правильную версию).
    Ответ написан 20 сент. 2021
    Комментировать
    Комментировать
  • (Оптимизация i18n) Почему yarn ругается на i18n?

    twolegs @twolegs
    Вебпак конфигурируется в другом поле, отсюда и ошибка.
    https://cli.vuejs.org/config/#configurewebpack
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как решить Parsing Error в ESLint?

    twolegs @twolegs
    Полагаю, что приведение парсится криво (особенно если в этом же файле есть темплейт).

    Предлагаю переписать так:
    (this.$refs.fileInput as HTMLElement).click()
    Ответ написан более года назад
    2 комментария
    2 комментария
  • Не считаете ли вы Utility types code smell'ом?

    twolegs @twolegs
    Злоупотребление этими типами действительно может выглядеть как дурно пахнущий код.
    Но тот же Partial лучше рассматривать как синтаксический сахар - например в том же c# и java ссылочные поля по умолчанию могут принимать null, поэтому там такого не надо.
    Omit же я бы не рекомендовал использовать там, где есть возможность контролировать типы. То есть если вы хотите модифицировать тип из какой-то библиотеки - Omit будет удобен, в случае если это ваш код, то я бы избегал его использования.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Зачем useRef нужен объект?

    twolegs @twolegs
    Это нужно для того, чтобы сохранять ссылку на сам ref-объект.
    То есть `useRef` всегда возвращает ссылку на один и тот же объект.
    Таким образом становится возможно использовать его без лишних апдейтов в том же useEffect.
    Ответ написан более года назад
    3 комментария
    3 комментария
  • Можно ли использовать eventlistener внутри observer'a?

    twolegs @twolegs
    > Скажется ли это на перфомансе?
    Скажется, ваши листенеры будут пересоздаваться каждый вызов колбэка, N раз в секунду.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Почему не работает position:sticky?

    twolegs @twolegs
    У вас неправильный селектор для `.upper`
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как создать исключительно React или Vue приложение?

    twolegs @twolegs
    create react-app создает только фронтенд.
    Просто современные реалии фронтенда таковы, что для его сборки необходима node.js
    Все это необходимо для того, чтобы собрать в папку build бандл с вашим приложением.
    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • Оцените логику проекта?

    twolegs @twolegs
    В render такое делать нельзя. Место для такой подписки - componentDidMount. Думаю, правильнее будет подписаться один раз, и не делать ничего, если isMenuOpen в true.
    if (isMenuOpen) {
          document.addEventListener('keydown', this.keyPressHandler)
        } else {
          document.removeEventListener('keydown', this.keyPressHandler)
        }


    Остальное (организация компонент) - это скорее вкусовщина. Но если смотреть в целом - нет какой-то консистентности. Где-то есть компоненты для логических элементов, где-то нет.
    Ответ написан более года назад
    2 комментария
    2 комментария
  • Почему react-scripts build не добавляет service-worker.js в билд?

    twolegs @twolegs
    https://create-react-app.dev/docs/making-a-progres...

    Нужно добавить файл src/service-worker.js

    Либо воспользоваться темплейтом cra-template-pwa
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как сделать чтобы useEffect выполнялся до монтирования компонента?

    twolegs @twolegs
    Никак, useEffect всегда вызывается после монтирования компонента.
    Выделите контент в отдельную компоненту и рендерите по условию. Только так.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как пофиксить NODE_ICU_DATA?

    twolegs @twolegs
    Похоже, что вы на windows пытаетесь запустить скрипт, который к этому не приспособлен.
    NODE_ICU_DATA - это переменная окружения, попробуйте устанавливать ее через cross-env (https://www.npmjs.com/package/cross-env). Но не уверен. что pwd будет работать даже в этом случае.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Не могу понять, почему валиться fetch при запросе?

    twolegs @twolegs
    const fullName = () => {
                let fullName = "";
    
                fullName += billing?.['first_name'] + " ";
                fullName += billing?.['last_name'];
    
                return fullName;
            };
            ...
            formData.append('name', fullName);


    Вот тут вы вместо строки в форму функцию добавляете, вероятно поэтому.

    formData.append('name', fullName());

    Но вообще не удивительно, что при таком стиле написания кода возникают баги. У вас глобальные переменные, перекрытие имен, мешанина с async и промисами. Попробуйте хотя бы банальный линтер добавить с базовыми правилами, будет уже чуть лучше.
    Ответ написан более года назад
    5 комментариев
    5 комментариев
  • Устроился работать Junior Frontend и попал в ад, что делать?

    twolegs @twolegs
    Сложно сказать, насколько это вообще ад.
    Да, возможно стек старый, но с архитектурной точки зрения приложение может быть сделано хорошо.
    Ваша проблема сейчас в том, что вы в какой-то мере начали понимать типичный реакт стек, но не видели мира за его пределами.
    Приложения на реакте, как правило, это пример плохой архитектуры. В реакте есть какие-то общие практики, но сейчас вы не можете сказать хороши они или нет, потому что вы не работали с другими.
    Мой совет - продолжить работать и попытаться понять глобально как работает продукт, какие архитектурные паттерны и решения в нем используются.
    Когда вы пройдете стадию отрицания и разберетесь в том, как все работает, у вас будет два пути - либо вы поймете что код на самом деле не так плох, и почерпнете для себя несколько хороших идей, либо окончательно убедитесь что код и в самом деле говно, но с полноценным набором причин, а не теми, что вы описали. Сейчас ваше описание выглядит просто как неаргументированная паника разработчика, который столкнулся с чем-то отличным от базового стека. Анализируйте, изучайте. То, как не надо делать - это тоже хороший опыт.
    Ответ написан более года назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • Следующие →
Самые активные сегодня
  • dimonchik2013
    Dimonchik
    • 10 ответов
    • 0 вопросов
  • gzhegow
    Григорий Васильков
    • 8 ответов
    • 0 вопросов
  • Adamos
    Adamos
    • 6 ответов
    • 0 вопросов
  • mayton2019
    • 5 ответов
    • 0 вопросов
  • Rsa97
    Rsa97
    • 4 ответа
    • 0 вопросов
  • firedragon
    Владимир Коротенко
    • 2 ответа
    • 2 вопроса
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации