• Как правильно настроить маршрутизацию для товаров?

    Krasnodar_etc
    @Krasnodar_etc
    avito front
    1. Dynamic Segments

    Его можно прописать в массиве с объектами, по которому мы пробегаемся через map, а далее достать {game.path} и поместить в Link to.Верно?


    -- Да, верно

    Если коротко, то вы делаете один роут с path="/tovari/:id"
    Все урлы вида "/tovati/111", "tovari/moytovar" попадут в этот роут
    В компоненте вы можете получить id с помощью const { id } = useParams();
    или напрямую из window.location.href

    2. Скорее всего никак. На все ховеры реагирую через css и вам советую :)

    3. Очень сложно сказать, не зная кода этих компонентов. Кажется, что можно в HOC вынести логику показа после клика, но я не уверен
    Ответ написан
    Комментировать
  • Переходы на многостраничном сайте?

    Krasnodar_etc
    @Krasnodar_etc
    avito front
    Ох, я постараюсь тезисно

    Вам нужен чуть более умный бэкенд (можно на любом языке, включая Node.js)
    Вместо html-файлов вы пишите шаблоны. Если у вас нода+Express.js, у него вроде был встроенный шаблонизатор ejs, есть ещё pug и много других (гуглить по Node шаблонизаторы). Если у вас на фронте React/Angular/View - лучше погуглить "название-библиотеки server side rendering", шаблонизация в них встроена

    Абстрактно, ваш бэкенд получает запрос, идёт в базу данных или какой-нибудь JSON-файл за данными, а потом передаёт эти данные в шаблонизатор

    В шаблонах можно использовать циклы, условия и разные другие плюшки из программирования. Вам не нужно писать 10 тэгов "a" для вывода списка, ваш список - стандартный массив, вы проходитесь по нему циклом и выводите данные в тэг "a". Условно:

    myItems.map(item => (
    <a href={item.link}>{item.text}</a>
    ))


    Нужно поменять что-то в ссылках - меняете в одном месте
    Нужно добавить товар или другие сущности - добавляете их данные в базу или JSON
    Ответ написан
    Комментировать
  • Переходы на многостраничном сайте?

    Fragster
    @Fragster
    помогло? отметь решением!
    помимо варианта с бэкэндом есть еще генераторы статических сайтов, которые на основе шаблонов сгенерят папку для размещения на хостинге, и там можно в виде json положить "товары" и сгенерируется необходимое количество страниц. Например https://nuxtjs.org/docs/concepts/static-site-generation или https://vuepress.vuejs.org/
    Ответ написан
    Комментировать
  • Найти ключ объекта по его значению?

    XanXanXan
    @XanXanXan
    function getKeyByValue(object, value) {
    Эта функция нигде не используется (консольлог не в счёт). Ну и функции нежелательно объявлять внутри условных конструкций.

    findOdd(A) ничего не возвращает в случае else.

    spoiler
    res = Object.values(result).filter((item)=>item%2 !==0);
    А здесь пропало ключевое слово объявления переменной. И res тоже не используется.

    Вообще такие задачи решаются в один проход по массиву.
    Ответ написан
    Комментировать
  • Вместо отрицательного числа в массиве получаю NaN.Как исправить?

    Seasle
    @Seasle Куратор тега JavaScript
    Потому что Вы неверно работаете со своими данными.
    1. Вместо разделения по пробелу, удаляете его.
    2. Зачем-то всё оборачиваете в массивы.

    const parsedNumbers = (numbers ?? '').split(/\s+/g).map((value) => parseInt(value));
    if (parsedNumbers.length === 0) {
        return null;
    }
    
    const min = Math.min(...parsedNumbers);
    const max = Math.max(...parsedNumbers);
    
    return `${max} ${min}`;
    Ответ написан
    Комментировать
  • Вместо отрицательного числа в массиве получаю NaN.Как исправить?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Попробуйте так:
    const highAndLow = (str) => {
      const nums = str.split(' ').map(((num) => +num));
      const min = Math.min(...nums);
      const max = Math.max(...nums);
    
      return `Max: ${max}, Min: ${min}`;
    };
    Ответ написан
    Комментировать
  • Как при помощи метода forEach указать условие?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    return arayOfSheep.filter((item) => item===true).length;

    Или сокращённый вариант
    return arayOfSheep.filter(Boolean).length;
    Ответ написан
    6 комментариев
  • Npm init не работает, как исправить?

    black1277
    @black1277
    Вольный стрелок
    Идете в папку C:\Program Files\nodejs\ там находите 4 файла npm.cmd, npm, npx.cmd, npx - открываете их в редакторе и заменяете prefix -g на prefix --location=global Мне это помогло. Если что - вот ссылка на issues в библиотеке npm https://github.com/npm/cli/issues/4980
    Ответ написан
    6 комментариев