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

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

    0xD34F
    @0xD34F Куратор тега JavaScript
    Делаем просто:

    const result = Object.values(cars.reduce((acc, n) => (
      (acc[n.make] ??= { make: n.make, attr: [] }).attr.push(n),
      acc
    ), {}));

    Делаем сложно:

    function group(data, key, val = n => n) {
      const getKey = key instanceof Function ? key : n => n[key];
      const getVal = val instanceof Function ? val : n => n[val];
      const result = new Map;
    
      for (const n of data) {
        const k = getKey(n);
        result.set(k, result.get(k) ?? []).get(k).push(getVal(n));
      }
    
      return result;
    }

    const result = Array.from(
      group(cars, 'make'),
      ([ make, attr ]) => ({ 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...
    Ответ написан
    Комментировать