• В чем разница между этими редиректами в React?

    @abberati
    frontend-разработчик
    В первом случае редакс ничего не знает про роутер, роутер используется сам по себе. Во втором случае роутер прикручен к редаксу и логика завёрнута в мидлварю из connected-react-router. В компонентах разницы никакой. Разница в том, что второй способ позволяет работать с роутером через диспатчи специальных экшонов там, где реакта нет — например, в redux-thunk или redux-saga.
    Ответ написан
    Комментировать
  • Как сгруппировать элементы массива по общему значению?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const group = (arr, idKey, groupKey) =>
      Object.values(arr.reduce((acc, n) => (
        acc[n[idKey]] ??= { [idKey]: n[idKey], [groupKey]: [] },
        acc[n[idKey]][groupKey].push(n),
        acc
      ), {}));
    
    
    const result = group(cars, 'make', 'attr');
    Ответ написан
    Комментировать
  • Как правильно очистить один из таймаутов?

    Пример слишком синтетический.
    componentWillUnmount как и componentDidMount гарантированно вызываются один раз.
    Функция this.foo вызывается в componentWillUnmount без условий. Какой смысл разносить реализацию и выполнение? Скажи какую задачу решить пытаешся, тогда не прийдется костыли писать
    componentDidMount() {
      this.foo = (timerToClear) = {
    
        //some code
        if (timerToClear) {
          clearTimeout(timerToClear);
        }
        setTimeout(func, 1);
      };
    };
    
    componentWillUnmount() {
      const timer = setTimeout(func, 1);
    
      //some code
    
      this.foo(timer);
    }


    Более реальный пример, когда ты садишь таймер на изменение стейта, но это красивее реализуется на хуке useEffect с очисткой
    https://reactjs.org/docs/hooks-effect.html#effects...
    Ответ написан
    Комментировать