• VUE, как решить вопрос по странному поведению свзяывания двух свойств?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    После этой манипуляции начинается проблема:

    полной реализации не видно, - но если предположить, что в массивы запихивается объект, то тогда делайте отдельную копию объекта для каждого массива, через тот же "JSON.stringify \ parse"

    потому что в массив попадает не сам объект, а только ссылка на этот объект.
    Из-за этого - изменение объекта по ссылке в одном из массиве, приводит к изменению объекта в другом массиве.
    по факту один и тот же объект находится в двух массивах

    upd
    и геттер isChanged у вас получился слабо устойчивый к изменениям. Если в объекте поменяется порядок полей, то может быть неожиданный результат:
    // два объекта с одинаковыми данными
    let a = { a: 1, b: 1 }
    let b = { b: 1, a: 1 }
    let isChange = JSON.stringify(a) !== JSON.stringify(b);
    // isChange будет равно true
    // потому что строка будет отличаться из-за разной позиции свойств объекта
    Ответ написан
    Комментировать
  • Почему выдаёт ошибку [vuex] unknown mutation type:?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    думаю что, вот это:
    this.commit('setUser', response.data);
    ищет мутацию из корневого хранилища.

    пробуйте что-нибудь такое:
    getUser({ commit }){
            axios.get("/api/v1/user/current")
                .then(response=>{
                    commit('setUser', response.data);
                })
        },


    или указывайте полный путь (вместе с именем модуля)
    Ответ написан
    3 комментария
  • Как закрыть по клику на его ::backdrop?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    похоже что нельзя

    но можно контент поместить в слой
    <dialog class="popup">
      <div class="layer">
        ...
      </div>
    <dialog>


    а у слоя останавливать всплывающие события => тогда можно отловить клики вне модалки, примерно так:
    document.querySelector('.layer').addEventListener('click', (e) => e.stopPropagation());
    document.querySelector('.popup').addEventListener('click', (e) => e.target.close());
    Ответ написан
    1 комментарий
  • Градиент справа налево под углом?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    calc(100% - 50px)
    Ответ написан
    Комментировать
  • Почему не работает код?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    из-за особенности значения
    можете тут прочитать про особенность и как можно проверять такие значения
    isNaN
    Ответ написан
    Комментировать
  • Как рисовать круги на пунктирной линии через равный промежуток?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    как пример, ещё можно так
    https://jsfiddle.net/5mfcw84j/
    Ответ написан
    Комментировать
  • Почему при ресайзе border меняется?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    потому что у rect не заданы размеры, поэтому он "плавает" внутри svg контейнера, попробуйте что-нибудь такое:
    <svg><rect x="0" y="0" width="100%"></rect></svg>
    Ответ написан
    2 комментария
  • Как вернуть значения из вложенной функции?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    // что-нибудь такое
    const getImgDimensions = (file) => {
      return new Promise((resolve, reject) => {
        const reader = new FileReader();
        reader.onload = () => {
          const img = new Image();
          img.onerror = reject;
          img.onload = () => {
            const height = img.height;
            const width = img.width;
            resolve({ height, width });
          };
          img.src = reader.result;
        };
        reader.readAsDataURL(file);
      })
    };
    
    // =>>
    getImgDimensions('https://.../image.jpg')
      .then(response => console.log(response)); // { height, width }
      .catch(err => console.log(err)); // error
    Ответ написан
  • Почему не заполняется стейт после ввода?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    window.state = store.getState() <-- содержит результат функции
    замените на:
    window.state = store.getState <-- содержит ссылку на функцию

    сейчас у вас в window.state попадает Объект и нигде больше не изменяется
    Ответ написан
    2 комментария
  • Mobile first простым языком?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    берёшь два макета мобильник\десктоп (по хорошему)
    делаешь разметку всех элементов с двух макетов
    переключаешься на мобильный вид и начинаешь рутину со стилями до десктоп варианта
    элементы, которые только на десктопе - прячешь, остальные элементы по мере доступной области растягиваешь. По итогу на мобильники приходиться меньше стилевых правил и меньше пользователей, которые не могут открыть по 100500 вкладок, потому что всё тормозит
    Ответ написан
    Комментировать
  • Что надо прописать в jquery, чтобы выделялась активная ссылка?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    а если поменять местами строки?
    $('a').removeClass('active');
    $(this).addClass('active');
    Ответ написан
    Комментировать
  • Генераторы и Promise. Зачем использвовать вместе?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    Зачем это :

    для последовательного выполнения промисов

    Если можно так :

    неправильно переписали логику, у вас по веткам .then() передаются не асинхронные промисы, а просто строки.
    Для наглядности представьте, что makeProm выполняет http запрос на сервер, где параметр msg - это url адрес

    чтобы повторить одинаковую логику придётся промисы выполнять в промисах,
    тем самым запутывая ветвление then\catch и усложняя логику обработку ошибок
    это будет примерно так:
    makeProm("first")
    .then(msg => {console.log('promised'); console.log(msg); return makeProm('second')})
    // .then(/* тут Успех для промиса 'second' ... и запускаем промис 'first2.0' */)
    // .catch(/* тут Ошибка для промиса 'second' */)
    .then(msg => {console.log('promised'); console.log(msg); return makeProm('first2.0')})
    // .then(/* тут Успех для промиса 'first2.0' ... и запускаем промис 'second2.0' */)
    // .catch(/* тут Ошибка для промиса 'first2.0' */)
    .then(msg => {console.log('promised'); console.log(msg); return makeProm('second2.0')})
    // .then(/* тут Успех для промиса 'second2.0' */)
    // .catch(/* тут Ошибка для промиса 'second2.0' */)
    //
    // В следующем блоке .then() мы уже потеряли данные из предыдущих промисов (тут будет последний промис)
    // Тоже самое и с ".catch" блоками, если у каждого промиса не обработать ошибку,
    // то ошибка может произойти в первом промисе, а перехватим её уже в последнем блоке,
    // без идентификации из какого промиса мы словили ошибку
    .then(msg => { console.log(msg) })
    .catch(err => { console.log(err) })

    ну как то так...
    Ответ написан
  • Не отображается картинка?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    потому что браузер не может загрузить картинку по указанному url адресу
    • разметка картинки не валидная (в адрес попал alt)
    • открываете в браузере файл страницы , а не ссылку на сайт
      из-за этого надо править относительный адрес картинки:
      или начинать адрес с точки "./img/", или без начального слеша, или использовать абсолютный url адрес на картинку

    Ответ написан
    Комментировать
  • Почему могут отличаться стиля на проде и локально?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    Версия пакета одинаковая что на сервере что на локалке

    версия пакета отличается, посмотрите сами историю пакета
    https://unpkg.com/simplebar@5.0.0/dist/simplebar.css
    https://unpkg.com/simplebar@5.1.0/dist/simplebar.css
    поиск по строке ".simplebar-scrollbar:before"

    upd обновите локальный пакет, чтобы сравнять с сервером минорный номер версии
    Ответ написан
  • Из за чего возникает ошибка при создании пользователя?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    попробуйте в постмане Text переключить на json
    это там где выбираете метод отправки параметров (body -> raw -> по правой стороне у вас на скрине "text")
    и смотрите какой Content-Type отправляется, должно быть что-нибудь похожее на "application/json"
    Ответ написан
    Комментировать
  • Какие ошибки я допустил в вёрстке?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    страница маленькая, но всё же пару пунктов есть

    1. проверить свой бэм, например, карточка товара ".item__wrapper"
    есть элемент "wrapper", который принадлежит к блоку "item" - а самого блока item нет ...

    2. капс в наименовании классов, - это очень редкое явление и не практичное
    если и использовать аннотации бэма можно же примиксовать класс или воспользоваться модификатором

    3. воспользоваться микроразметкой для товара, - магазин всё же
    для первых страничек не заморачивайтесь с этим
    https://yandex.ru/support/webmaster/schema-org/wha...
    Ответ написан
    1 комментарий
  • Как расставить два блока?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    что-нибудь такое https://jsfiddle.net/9tangp7r/
    но не очень понятно почему медиа точками нельзя воспользоваться...
    Ответ написан
    Комментировать
  • Почему продолжилось нормальное выполнение после выброса исключения?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    можно так интерполировать:

    когда Есть исключение в блоке try - то выполнение продолжиться В ближайшем блоке catch.
    строки идущие после ошибки, в блоке try, не выполнятся

    когда Нет исключения в блоке try - то выполнение продолжиться За последним блоком catch выполнятся все инструкции в блоке try и выполнение продолжиться за блоком catch

    вне зависимости было или нет исключение, выполнение продолжиться после конструкции try...catch
    Ответ написан
  • Создание функционала сайта с помощью cookie? Целесообразно?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    Создание функционала сайта с помощью cookie? Целесообразно?

    на сколько целесообразно - это всё индивидуально для каждого проекта.
    можно избавиться и от куков
    Для пользователя генерировать публичную ссылку с идентификатором (набором параметров), при таком подходе пользователи смогут делиться своими настройками сайта с другими участниками
    Ответ написан
    Комментировать