• Откуда берётся next и action в кастомных мидлварах redux?

    neuotq
    @neuotq
    Прокрастинация
    Сама запись просто укороченный способ записать функцию которая возвращает функцию, которая возвращает функцию.
    function logger(store) {
      return function wrapDispatchToAddLogging(next) {
        return function dispatchAndLog(action) {
          console.log('action', action)     
          console.log('next', next)
          console.log('store', store)
          return next
        }
      }
    }

    Легче читается так
    const logger = store => next => action => {      
          console.log('action', action)     
          console.log('next', next)
          console.log('store', store)
          return next       
    }

    И вызвав logger(1)(2)(3); вы получете:
    action 3
    next 2
    store 1

    Далее, сама applyMiddleware уже умеет(с проверками и парочкой хитростей и ограничениями) прокидывать нужные параметры, запуская каждый middlware, на каждом этапе добавляя параметр.
    Условный пример, не про реальность, а так чтобы понятно:
    //Наш миддлвар
    const logger = store => next => action => {      
          console.log('action', action)     
          console.log('next', next)
          console.log('store', store)
          return next       
    }
    //другой наш миддлвар
    const logger2 = store => next => action => {      
          console.log('action2', action)     
          console.log('next2', next)
          console.log('store2', store)
          return next       
    }
    
    //Наша функция применялка, которая берет все миддлвары и будет с ними что-то мутить
    function applyMiddleware(...middlewares) {
      const param1 = 1;
      const param2 = 2;
      const param3 = 3;
      const do1 = middlewares.map(middleware => middleware(param1))
      const do2 = do1.map(middleware => middleware(param2))
      const do3 = do2.map(middleware => middleware(param3))
     //Возвращаем условно 
     return 1
    }
    
    //Где-то в коде мы вызываем applyMiddleware
    applyMiddleware(logger, logger2 )
    
    //В консоле получим
    //action 3
    //next 2
    //store 1
    //action2 3
    //next2 2
    //store2 1
    Ответ написан
    1 комментарий
  • Как проверить если ли буква в массиве?

    @rPman
    if(myString[i] == letters[i])что? у тебя в цикле сравниваются буквы на равных позициях искомой строки и массива букв, т.е. сначала первую букву hello с первой буквой массива, потом вторую букву hello со второй будквой массива и т.п.

    ты должен отлаживать свой код чтобы понимать где проблема, ты увидил бы это сразу же
    тут нужен двойной цикл, отдельно по буквам hello и отдельно по массиву букв
    Ответ написан
    6 комментариев
  • Различие между service и controllers в node js ( express )?

    Grapeoff
    @Grapeoff
    В чём концепция...?
    Сервис — в нём пишем всю нашу логику. Сервис ничего не должен знать о запросе. У него нет доступа ни к Request, ни к Response.

    Контроллер — принимает запрос и передаёт в наш сервис.

    С бд можно работать в сервисе, но всё чаще вижу, что люди используют паттерн «Репозиторий», когда всю логику работы с бд суют в него.
    Ответ написан
    1 комментарий
  • Почему не выполняется роут в node js ( express )?

    Grapeoff
    @Grapeoff
    В чём концепция...?
    Вы должны вызвать next() в вашем logging middleware. Код просто дальше по цепочке не идёт.
    Ответ написан
    6 комментариев