Redux: рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЬреВрди 2018  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: reduxjs/redux

рдХреАрдбрд╝рд╛

рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкреИрдЯрд░реНрди рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред рдЖрдИрдПрдордУ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕рдорд╛рдзрд╛рди рдЕрдкрдиреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреНрдп рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдкреИрдЯрд░реНрди рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХреЗрд╡рд▓ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдмрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдореВрд▓реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛: рд╡реЗ рдЬреЛ applyMiddleware рдЖрд░рдВрднреАрдХрд░рдг рдкрде рдХреЗ рджреМрд░рд╛рди рдЕрдиреНрдп рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╕рдордп рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ:

// Make state aware of browser media queries
const mediaQueries = (mediaQueries = defaultMediaQueries): Middleware => store => {
  if (typeof window !== 'undefined') {
    const reverseMap = createReverseMap(mediaQueries)

    const handleMediaChange = ({media, matches}: MediaChangedActionPayload) =>
      store.dispatch(mediaChanged(reverseMap[media], matches))

    const addMatchListener = (media: string) => {
      const match = window.matchMedia(media)
      match.addListener(handleMediaChange)
      return match.matches
    }

    values(mediaQueries).forEach(media => 
      handleMediaChange({media, matches: addMatchListener(media)}))
  }

  return next => (action: any) => next(action)
}

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:

// Make state aware of user adblockers
const adBlockDetection: Middleware = store => {
  if (typeof document !== 'undefined' && !document.getElementById('XMpADSwgbPUC')) {
    store.dispatch({type: AD_BLOCKER_DETECTED, payload: true})
  }
  return next => (action: any) => next(action)
}

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:

// Make state aware of socket connectivity and allow synchronisation of actions
const socketMiddleware = ({actionCreator, url, dataSync}) => store => {
  const socket = new WebSocket(url.replace(/(http|https)/, 'ws'))

  socket.addEventListener('message', ({data}) => {
    store.dispatch(JSON.parse(data))
  })

  socket.addEventListener('open', () => {
    socket.send(syncCreator(CONNECT_TO_DOMAIN, store.getState(), null, socket))
    store.dispatch(actionCreator({connected: true}))
  })

  socket.addEventListener('close', reason => {
    store.dispatch(actionCreator({connected: false}))
  })

  return next => action => {
    if (dataSync.hasOwnProperty(action.type)) {
      socket.send(syncCreator(action.type, store.getState(), action.payload, socket))
    }
    return next(action)
  }
}

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ applyMiddleware рджреМрд░рд╛рди рдлреЗрдВрдХ рджреА рдЬрд╛рддреА рд╣реИ, рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреЛрдбрд╝рдирд╛:

Uncaught Error: Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch

рдЙрдкрд░реЛрдХреНрдд рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ next => рдлрд╝рдВрдХреНрд╢рди (рдиреАрдЪреЗ рдХреА рддрд░рд╣) рджреНрд╡рд╛рд░рд╛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ (рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рднреА рдирд╣реАрдВ рд╣реИ)ред

// Still broken:
const mediaQueries = (mediaQueries = defaultMediaQueries): Middleware => store => next => {
  // ...middlewareCodeGoesHere...
  return (action: any) => next(action)
}

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?

рдРрдк рдХреЛ рдордд рддреЛрдбрд╝реЛред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд▓реЙрдЧ рдХрд░реЗрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ 100% рдорд╛рдорд▓реЛрдВ рдореЗрдВ _рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЙрд╕ рдкреНрд░реЗрд╖рдг рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдХрдо рд╡реИрдз рдХрд╛рд░рдг рд╣реИрдВ (рдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕рдВрджрд░реНрдн рдХреЗ рднреАрддрд░ рд╕реЗ рдХрд┐рд╕реА рднреА рдкреНрд░реЗрд╖рдг рдХреЛ рдХрднреА рднреА рд╕реНрдЯреИрдХ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХреЛрдб рдЧрдВрдз (рдпрд╣ рдЬрдЧрд╣ рд╣реЛрдЧреА) рдХрдо рд╕реЗ рдХрдо рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрд░ рдирд┐рд╣рд┐рдд рдЖрджреЗрд╢ рдирд┐рд░реНрднрд░рддрд╛)ред

Redux рдХреЗ рдХреМрди рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг, рдФрд░ рдХреМрди рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ OS рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИрдВ?

рдЗрд╕ рдкреАрдЖрд░ рддрдХ рдХрд╛рдо рдХрд┐рдпрд╛ред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@markerikson рд╣рд╛рдБ рдореИрдВрдиреЗ рд╡рд╣ рдореБрджреНрджрд╛ рджреЗрдЦрд╛ рд╣реИред рдирдпрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди "рд╣рд▓" рдХрд░рдиреЗ рд╡рд╛рд▓реА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ:

рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЬрдм рдЖрдк рдорд┐рдбрд▓рд╡реЗрдпрд░ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рд╡рд╣ рд╢реНрд░реЛрддрд╛ рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП

рдпрд╣ рдЖрдИрдПрдордУ рд╣реИ, рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдЬрд┐рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рдЬреЛ _рдмреНрд░реЗрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рднреА рдореМрдЬреВрджрд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░, рдЬрд┐рд╕рдореЗрдВ рддреГрддреАрдп рдкрдХреНрд╖ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдЗрд╕ рдЖрдВрддрд░рд┐рдХ рдкреНрд░реЗрд╖рдг рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдореВрд▓ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдЬрд┐рд╕реЗ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдкрд░ рддрддреНрдХрд╛рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ), рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП 3.x рдХреЗ рд╕рд╛рде рд░рд╣рдирд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ 4.x рдореЗрдВ рд╣реА рд╕рд╣реА рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдЕрдкрдиреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдлрдВрд╕реЗрдВрдЧреЗред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрд░реНрдХ рднрд▓реЗ рд╣реА рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рди рд╣реЛред

рдФрд░ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рднреА рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рддрдирд╛ рдорд╣рддреНрд╡рд╣реАрди рд╣реИ: "рд╕рдорд╕реНрдпрд╛" рдпрд╣ рд╣реИ рдХрд┐ Other middleware would not be applied to this dispatch , рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рдФрд░ рдЕрдм рддрдХ, рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рд░рд╣рд╛ рд╣реИ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛, рдЬрд╣рд╛рдВ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд░рд╛рдЙрдЯрд░ рд╕реЗ рднреЗрдЬреЗ рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, Redux рдореЗрдВ "рдлрд┐рдХреНрд╕" рдЕрднреА рдЙрд╕ рдХреЛрдб рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛ ред рдпрд╣ рд░рд╛рдЙрдЯрд░ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЕрдм рдЙрд╕ рдорд┐рдбрд▓рд╡реЗрдпрд░ (рдФрд░ рдЕрдиреНрдп рд╕рднреА рд╕рдорд╛рди рдорд┐рдбрд▓рд╡реЗрдпрд░) рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ 4.x рд╕рдВрдЧрдд рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдм рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рднреЗрдЬреЗ рдЧрдП "рд╕реНрдЯреЛрд░ рд░реЗрдбреА" рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдкреИрдХреЗрдЬ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдФрд░ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕рд░рдгреА рдореЗрдВ рдбрд╛рд▓рдиреЗ рд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдЕрдм рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдРрдк рд▓реЗрдЦрдХреЛрдВ рдХреЛ рд╕реНрдЯреЛрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдордирдорд╛рдиреА "рд╕реНрдЯреЛрд░ рддреИрдпрд╛рд░" рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИрдХреА рддрд░реАрдХрд╛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдФрд░ рдЕрдм рдЙрдирдХреЗ рд╕рднреА рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдПрдХ рд╣реА рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдРрдк рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдХрдИ "рд╕реНрдЯреЛрд░ рд░реЗрдбреА" рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЬреЛ рднреА рдПрдкреАрдЖрдИ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред

рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрдбрд╝рдмрдбрд╝реА рд╣реИ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ "рдЗрд▓рд╛рдЬ" рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ "рдмреАрдорд╛рд░реА" рд╕реЗ рднреА рдмрджрддрд░ рд╣реИред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдкреАрдЖрд░ рдореЗрдВ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЗрдирд┐рдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ 4.0 рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрджрд▓ рдЧрдИ рдереАред рдпрд╣ рдПрдХ рдЬрд╛рдирдмреВрдЭрдХрд░ рдбрд┐рдЬрд╛рдЗрди рдирд┐рд░реНрдгрдп рдерд╛, рдФрд░ # 1240 рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рддрддреНрдХрд╛рд▓ рд╕реБрдЭрд╛рд╡ рд╣реИ, рдХреБрдЫ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рднреЗрдЬреЗ рдЧрдП "рд╕реНрдЯреЛрд░ рддреИрдпрд╛рд░ рд╣реИ" рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рддрд░реНрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ред рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп 3.x рдХреЗ рд╕рд╛рде рд░рд╣рдиреЗ рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@markerikson рд╣рд╛рдБ рдореИрдВрдиреЗ рд╡рд╣ рдореБрджреНрджрд╛ рджреЗрдЦрд╛ рд╣реИред рдирдпрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди "рд╣рд▓" рдХрд░рдиреЗ рд╡рд╛рд▓реА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ:

рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЬрдм рдЖрдк рдорд┐рдбрд▓рд╡реЗрдпрд░ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рд╡рд╣ рд╢реНрд░реЛрддрд╛ рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП

рдпрд╣ рдЖрдИрдПрдордУ рд╣реИ, рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдЬрд┐рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рдЬреЛ _рдмреНрд░реЗрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рднреА рдореМрдЬреВрджрд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░, рдЬрд┐рд╕рдореЗрдВ рддреГрддреАрдп рдкрдХреНрд╖ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдЗрд╕ рдЖрдВрддрд░рд┐рдХ рдкреНрд░реЗрд╖рдг рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдореВрд▓ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдЬрд┐рд╕реЗ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдкрд░ рддрддреНрдХрд╛рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ), рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП 3.x рдХреЗ рд╕рд╛рде рд░рд╣рдирд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ 4.x рдореЗрдВ рд╣реА рд╕рд╣реА рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдЕрдкрдиреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдлрдВрд╕реЗрдВрдЧреЗред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрд░реНрдХ рднрд▓реЗ рд╣реА рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рди рд╣реЛред

рдФрд░ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рднреА рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рддрдирд╛ рдорд╣рддреНрд╡рд╣реАрди рд╣реИ: "рд╕рдорд╕реНрдпрд╛" рдпрд╣ рд╣реИ рдХрд┐ Other middleware would not be applied to this dispatch , рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рдФрд░ рдЕрдм рддрдХ, рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рд░рд╣рд╛ рд╣реИ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛, рдЬрд╣рд╛рдВ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд░рд╛рдЙрдЯрд░ рд╕реЗ рднреЗрдЬреЗ рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, Redux рдореЗрдВ "рдлрд┐рдХреНрд╕" рдЕрднреА рдЙрд╕ рдХреЛрдб рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛ ред рдпрд╣ рд░рд╛рдЙрдЯрд░ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЕрдм рдЙрд╕ рдорд┐рдбрд▓рд╡реЗрдпрд░ (рдФрд░ рдЕрдиреНрдп рд╕рднреА рд╕рдорд╛рди рдорд┐рдбрд▓рд╡реЗрдпрд░) рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ 4.x рд╕рдВрдЧрдд рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдм рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рднреЗрдЬреЗ рдЧрдП "рд╕реНрдЯреЛрд░ рд░реЗрдбреА" рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдкреИрдХреЗрдЬ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдФрд░ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕рд░рдгреА рдореЗрдВ рдбрд╛рд▓рдиреЗ рд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдЕрдм рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдРрдк рд▓реЗрдЦрдХреЛрдВ рдХреЛ рд╕реНрдЯреЛрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдордирдорд╛рдиреА "рд╕реНрдЯреЛрд░ рддреИрдпрд╛рд░" рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИрдХреА рддрд░реАрдХрд╛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдФрд░ рдЕрдм рдЙрдирдХреЗ рд╕рднреА рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдПрдХ рд╣реА рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдРрдк рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдХрдИ "рд╕реНрдЯреЛрд░ рд░реЗрдбреА" рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЬреЛ рднреА рдПрдкреАрдЖрдИ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред

рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрдбрд╝рдмрдбрд╝реА рд╣реИ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ "рдЗрд▓рд╛рдЬ" рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ "рдмреАрдорд╛рд░реА" рд╕реЗ рднреА рдмрджрддрд░ рд╣реИред

рдЖрдкрдХреЗ рд╣рд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЕрднреА рднреА рд╕рдВрднрд╡ рд╣реИред рдорд┐рдбрд▓рд╡реЗрдпрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмрд╕ рдкреНрд░реЗрд╖рдг рдХрд░реЗрдВред рд╢рд╛рдпрдж рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ setupMiddleware(store) рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╕реНрдЯреЛрд░ рдмрдврд╝рд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЗрдВред

рддреНрд░реБрдЯрд┐ рдХреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдХрд▓реНрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд┐рдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдг рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдЖрдк applyMiddleware рдХреЗ рдЖрдВрддрд░рд┐рдХ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рди рд╣реЛрдВ)ред Redux рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддреНрд░реБрдЯрд┐ рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рд░реБрдЦ рдЕрдкрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреВрд░ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЙрд▓рдмреИрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдорд┐рдбрд▓рд╡реЗрдпрд░ afterApply рдИрд╡реЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддрдм рд╕рдм рдХреБрдЫ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдФрд░ рдХреНрд░рдо рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╕рд╣реА рд╕рдордп рдкрд░ рдкреНрд░реЗрд╖рдг рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рдПрдЧреАред рдпрд╣ рд╕реЛрдЪрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

olalonde picture olalonde  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rui-ktei picture rui-ktei  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

timdorr picture timdorr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dmitry-zaets picture dmitry-zaets  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wmertens picture wmertens  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ