• Как типизировать router.push(pathname)?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Проверил чистую установку next 13.4.12 - такой проблемы нет.

    Где-то говняет типы роутера. Возможно у тебя отдельно в package.json подключена устаревшая в версия роутера - тогда удали её.
    Иначе тыкни Ctrl+Click на .push и тебе откроет файл с декларацией, если она не\не только в next/dist/shared/lib/app-router-context.d.ts - разбирайся откуда взялась левая.
    Ответ написан
    Комментировать
  • Как лучше сделать корзину React?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Нет, подход неправильный.

    Несколько вопросов, позволяющих натолкнуться на правильную мысль:
    1) Что, если товаров несколько миллионов? Будете хранить весь миллион `items` и выдёргивать его каждый раз?
    2) Что, если в корзину нужно положить два одинаковых товара?
    3) Обычно товар в корзине не имеет все характеристики сразу (`sizes` в вашем случае) сразу, характеризуясь лишь некоторыми свойствами

    А ещё в корзинах обычно дофига внутренней бизнес-логики, которую на фронте держать...
    Ну, наверное, можно, но практика показывает, что чем сложнее требования бизнеса, тем менее целесообразно это всё делать на фронте.
    Всякие "если товаров определённого типа с определённым свойством в корзине более пяти штук, а ещё сегодня пятница и в админке поставлена галочка, то примени к этим товарам скидку в 50%, но не более 10 000 рублей, не суммируя с другими скидками" - это традиционно задача на бэкенд.

    Отсюда логичным образом следует, что элементы в корзине не должны (более того - не могут) формироваться напрямую из списка продуктов, это просто другие данные, получаемые из другого источника, с другой схемой.
    Схемы (набор полей) могут пересекаться, одна может являться надмножеством другой - короче, они могут быть тем или иным образом похожи, но сущности это разные.
    Ответ написан
    1 комментарий
  • Как исправить ошибку TypeScript?

    @wonderingpeanut
    Когда в джаваскрипте появился такой интересный синтаксис?))
    if (0 < something && something < 90) {
      doSomething();
    }


    upd. технически это будет работать, но совсем не так, как ты думаешь.
    Сначала выполнится выражение 0 < windDeg, результат этого выражения будет boolean. Потом булевое значение сравнивается с числом. Отсюда ошибка.
    Ответ написан
    1 комментарий
  • Как получить массив дат со следующими пятью днями?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    [0, 1, 2, 3, 4].map(
      (shift) => {
        const date = new Date();
        date.setDate(date.getDate() + shift);
        return date.toLocaleDateString('en-CA');
      }
    );
    // Array(5) [ "2022-03-28", "2022-03-29", "2022-03-30", "2022-03-31", "2022-04-01" ]

    const date = new Date();
    const dates = [];
    for (i = 0; i < 5; i += 1) {
      dates.push(date.toLocaleDateString('en-CA'));
      date.setDate(date.getDate() + 1);
    }
    console.log(dates);
    // Array(5) [ "2022-03-28", "2022-03-29", "2022-03-30", "2022-03-31", "2022-04-01" ]
    Ответ написан
    3 комментария
  • Как получить массив дат со следующими пятью днями?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Array(5) // длина массива
      .fill()
      .map((_, i) => {
        const D = new Date();
        D.setDate(D.getDate() + i);
        return D;
      })
    вернет требуемый массив дат
    Ответ написан
    1 комментарий
  • Как получить массив дат со следующими пятью днями?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    Date.prototype.addDays = function(days) { // https://stackoverflow.com/questions/563406/how-to-add-days-to-date
        var date = new Date(this.valueOf());
        date.setDate(date.getDate() + days);
        return date;
    }
    function date4y2m2d(date) {
      const _format = n => {
        return n < 10 ? '0' + n : n;
      };
      return `${ date.getFullYear() }-${ _format(date.getMonth() + 1) }-${ _format(date.getDate()) }`;
    }
    
    let date = new Date();
    let days = [date4y2m2d(date)];
    for (let i = 1; i < 5; i++) {
      days.push( date4y2m2d(date.addDays(i)) );
    }
    console.log(days); //готово
    Ответ написан
    1 комментарий
  • Как правильно составить SQL-запрос?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    джоин выданные книжки с книжками и с авторами и сум(авторс.ид) груп бай авторс.ид
    Ответ написан
    Комментировать
  • Как правильно составить SQL-запрос?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    SELECT 
                `authors`.`id`, `authors`.`last_name`, `authors`.`first_name`, COUNT(*) `author_count`
            FROM `bookissue` 
            JOIN `books` ON `books`.`id` = `bookissue`.`idBook` 
            JOIN `authors` ON `authors`.`id` = `books`.`idAuthor`
            WHERE YEAR(`bookissue`.`data`) = ?
            GROUP BY `authors`.`id`, `authors`.`last_name`, `authors`.`first_name`
            ORDER BY `author_count` DESC
            LIMIT 1
    Ответ написан
    Комментировать