• Как из redux store получить обьект из массива?

    Отдельные объекты обычно получают по его id отдельным запросом на сервер. Почему?
    1. Потому что в реальных приложениях списки могут быть очень длинными, поэтому они достаются с сервера не целиком, а постранично, с пагинацией. Естественно нужного объекта на текущей странице может не оказаться, поэтому его лучше сразу брать с сервера.
    2. Потому что данных в списке может быть не достаточно для страницы с одним объектом. Списки обычно бывают облегчены для производительности и могут содержать только те поля, которые нужно показать именно в списке.

    Кроме того, в настоящем приложении страница с одним объектом должна работать независимо от того, заходил ли пользователь до этого на страницу списка или нет. То есть каждая страница должна получать все нужные данные независимо от других страниц.
    Ответ написан
    1 комментарий
  • Webstorm vs VS Code 2019?

    Я считаю каждый работает на том, на чем привык работать и будет хвалить именно свой IDE или редактор кода. За свое время я работал со следующими IDE для написания JS кода и все они казались мне ничего:
    • Adobe Dreamweaver
    • Eclipse
    • Komodo IDE
    • Codelobster
    • NetBeans IDE
    • Visual Studio

    Но веб не стоял на месте, появлялись новые стандарты js, npm, ESLint, grunt, gulp, webpack и прочее. И из этой шестерки более менее успевал за модой только Visual Studio. Успевал это конечно очень образно говоря. Про остальные я вообще молчу.
    И когда я познакомился с WebStorm меня конечно сразу подкупила его функциональность, современность, следование тенденциям в веб-разработке. Так вот о чем я, VS Code конечно тоже хороший редактор, но главный его плюс это бесплатность. В плане функционала, современности и удобства пользования у WebStorm нет конкурентов. Но понять это можно только используя если не все, то хотя бы половину его возможностей. Многие его фичи открываются только любопытным людям.

    P.S. Многие говорят что у VS Code есть плагины, но все почему-то забывают что у WS они тоже есть.
    Ответ написан
    Комментировать
  • Как делаются сайты на React?

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

    Второе. У Реакт приложения бывает root-элемент. Это элемент на странице, который будет считаться корневым. Все что ниже этого элемента есть реакт-приложение, которое контроллируется реактом. То есть представляет собой набор компонентов вложенных друг в друга.

    Как компоненты взаимодействуют друг с другом (меняют состояние друг друга)? Через глобальный/родительский компонент ?

    Состояние компонента можно поменять извне через изменение его props. Props можно прокидывать вниз по иерархии от компонента к компоненту или использовать глобальное хранилище, например Redux.
    Ответ написан
    Комментировать
  • Если ограничения на использования метода render как стрелочной функции в React?

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

    Если ОС Ubuntu, Debian или CentOS, то вот эта команда должна помочь:
    echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
    Ответ написан
    Комментировать
  • Как найти элементы, встречающиеся в массиве максимальное количество раз?

    const arr = [1,1,1,1,1, 3,3,3,3,3, 5,5 ,6,6,6, 7,7,7,7,7];
    
    const calc = arr.reduce((prev, curr) => {
      const idx = prev.findIndex(item => item.val === curr);
      if (idx !== -1) {
        return ++prev[idx].count && prev;
      } else {
        return prev.push({ val: curr, count: 1 }) && prev;
      }
    }, []);
    
    const max = Math.max(...calc.map(i => i.count));
    const result = calc.filter(i => i.count === max).map(i => i.val);
    
    console.log(result); // [1, 3, 7]
    Ответ написан
    Комментировать
  • Как изменять все свойства объектов, js?

    const arr = [
      {
        label: '1',
        enabled: true,
      },
      {
        label: '2',
        enabled: false,
      },
      {
        label: '3',
        enabled: false,
      },
    ];
    
    const obj = {
        label: '2',
        enabled: true,
    };
    
    const result = arr.map(item => {
        item.enabled = item.label === obj.label;
        return item;
    });
    Ответ написан
    Комментировать
  • Как лучше изменить код?

    Примерно вот так:
    const queries = [
        categoryModel.find({}),
        productModel.find({}),
        seasonModel.find({}),
        sizeModel.find({})
    ];
    Promise.all(queries).then(result => {
        console.log(result);
    }).catch(err => {
        throw err;
    });
    Ответ написан
    Комментировать
  • Как преобразовать ключи объекта вида "key[index]" к массиву?

    const result = {};
    const list = {
        "action_buttons[0]": "View",
        "action_buttons[1]": "Share",
        "action_buttons[2]": "Download",
        "columns[0]": "Date of Study",
        "columns[1]": "Patient",
        "columns[2]": "File name",
        "columns[3]": "Reporting <br>Physician",
        "columns[4]": "Institution"
    };
    
    Object.keys(list).forEach(key => {
      const value = list[key];
      const combinedKey = key.replace(/\[.+\]/, '');
      if (Array.isArray(result[combinedKey])) {
        result[combinedKey].push(value);
      } else {
        result[combinedKey] = [value];
      }
    });
    
    console.log(result);
    Ответ написан
    Комментировать
  • Javascript. Как по очереди(с задержкой) изменить свойство елемента?

    Вариант с очищением стиля предыдущего элемента и возвратом в начало списка:
    const list = document.querySelectorAll('.elem');
    let pool = [...list];
    let counter = 0;
    animate();
    
    function animate(index = 0) {
        setTimeout(() => {
            if (!pool.length) {
         	    pool = [...list];
                counter = 0;
            }
      	const current = pool.shift();
            list[index - 1] && (list[index - 1].style.backgroundColor = 'white');
      	current.style.backgroundColor = 'red';
            animate(++counter);
        }, 1000);
    }
    Ответ написан
    Комментировать
  • Как вернуться к начальному состоянию редюсера в redux конкретного свойства?

    export default function Reducer(state = initialState, action) {
      switch (action.type) {
        case RESET_TYPE_ID:
          return {
            ...state,
            filter_models: {
              ...state.filter_models,
              type_id: null
            }
          };

    P.S. Но в вашем случае это плохая идея, потому что делать сброс значения на каждый пустой фильтр это не очень эффективно. Как вариант можно полностью переписывать filter_models при каждом изменении фильтра изначально отбрасывая фильтры без значений. В этом может помочь pickBy из lodash:
    const filters = _.pickBy(filterSet, _.identity);
    Ответ написан
    1 комментарий
  • Получить значение объекта?

    const getByID = (ID, arr) => (arr.find(({ id }) => id === ID)).text;
    Ответ написан
    Комментировать
  • Как в bootstrap 4 поменять размер container?

    Приведу пример как я делал в своем проекте (бутстрап ставится через npm, но это не принципиально):
    app.scss:
    @import 'custom';
    @import '~bootstrap/scss/bootstrap';
    @import 'main';

    custom.scss:
    $grid-breakpoints: (
            xs: 0,
            sm: 576px,
            md: 768px,
            lg: 992px,
            xl: 1200px,
            xxl: 1920px
    );
    
    $container-max-widths: (
            sm: 540px,
            md: 720px,
            lg: 960px,
            xl: 1200px,
            xxl: 1918px
    );
    
    $colors: (
            blue: #1799d3,
            pink: #e20073
    );
    
    $theme-colors: (
            primary: #1799d3,
            pink: #e20073
    );
    
    $body-color: #444;
    $line-height-base: 1.2;

    Нужные переменные можно посмотреть в исходниках бутстрапа, куда смотреть написано в документации.
    Ответ написан
    1 комментарий
  • Genesis framework стоит ли использовать?

    Использовал его как-то давно. Уже многого не помню, но как сказал Gori4ka ничего особенного в нем нет. Можно взять любой бесплатный фреймворк и сделать тоже самое, если уметь.
    Ответ написан
    Комментировать
  • По какой причине слетает шрифт при загрузке сайта на хостинг?

    Потому что шрифт грузится по http, а сайт у вас на https. Загрузка смешанного содержимого запрещена политикой браузера. С консоли есть сообщение на эту тему. Поменяйте в url шрифта http на https.
    Ответ написан
    Комментировать
  • Отправка данных в POST на vue + axios?

    Если express или koa, то делайте как здесь:
    app.use(async (req, res, next) => {
        res.setHeader('Access-Control-Allow-Origin', '*');
        res.setHeader("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE");
        res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
        next();
    });
    Ответ написан
  • Замена стандартной cmd?

    Conemu - можно встроить в контекстное меню папок. Можно менять фон на любую картинку. Есть вкладки. Рекомендую.
    Ответ написан
    Комментировать
  • Как сделать сортировку html элементов по атрибуту data-*?

    <button id="sort" type="button">Sort</button>
      <br><br>
      
      <div id="body">
        <div class="listing-item" data-event-date="2017-05-02">2017-05-02</div>
        <div class="listing-item" data-event-date="2018-01-07">2018-01-07</div>
        <div class="listing-item" data-event-date="2017-06-05">2017-06-05</div>
        <div class="listing-item" data-event-date="2018-01-03">2018-01-03</div>
        <div class="listing-item" data-event-date="2017-08-08">2017-08-08</div>
      </div>

    =============================================================
    const items = [...document.querySelectorAll('.listing-item')];
    
    function compare(a, b) {
    	const aData = new Date($(a).data('event-date'));
      const bData = new Date($(b).data('event-date'));
      if (aData < bData) {
        return -1;
      }
      if (aData > bData) {
        return 1;
      }
      return 0;
    }
    
    $('#sort').on('click', () => {
    	items.sort(compare);
      $('#body').empty();
    	items.forEach(item => {
      	$('#body').append(item);
      });
    });
    Ответ написан
    1 комментарий
  • Почему не работает код (Javascript)?

    leftMenu.style.display это инлайн стили. Если задать стили через CSS они не появятся в свойстве style у элемента. Читать их надо по-другому.
    Ответ написан
    Комментировать