Redux: рдПрдХ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░ рдореЗрдВ рдХрдИ рдПрдХреНрд╢рди рдХреИрд╕реЗ рдбрд┐рд╕реНрдкреИрдЪ рдХрд░реЗрдВ

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

рдореЗрд░реЗ рдкрд╛рд╕ рдлрд╝реНрд▓реВрд╕ рдкрд░ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

function authFormSubmit(fluce) {
  const {valid, disabled, data: {username, password}} = fluce.stores.authForm

  if (disabled) return

  if (!valid) {
    fluce.dispatch(AUTH_FORM_ERROR, new Error('Form is invalid'))
    return
  }

  fluce.dispatch(AUTH_FORM_DISABLED, true)
  fluce.dispatch(AUTH_FORM_ERROR, null)

  authorize({username, password})
    .then(
      user => fluce.dispatch(CURRENT_USER, user),
      error => fluce.dispatch(AUTH_FORM_ERROR, error)
    )
    .then(
      () => fluce.dispatch(AUTH_FORM_DISABLED, false)
    );
}

Redux рдореЗрдВ рд╕рдорд╛рди рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ? рдХреНрдпрд╛ рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

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

рдореИрдВ рд╢рд╛рдпрдж рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░ рдХреЛ рдПрдХ рдлрдВрдХреНрд╢рди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рджреВрдВрдЧрд╛ред рдпрджрд┐ рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рддреЛ рдЗрд╕реЗ dispatch рдФрд░ рд░рд╛рдЬреНрдп рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдореИрдВ рд╢рд╛рдпрдж рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░ рдХреЛ рдПрдХ рдлрдВрдХреНрд╢рди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рджреВрдВрдЧрд╛ред рдпрджрд┐ рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рддреЛ рдЗрд╕реЗ dispatch рдФрд░ рд░рд╛рдЬреНрдп рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдКрдкрд░ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ async AC рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╡реЗ рд░рд╛рдЬреНрдп рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗтАФрдореИрдВ рд╢рд╛рдпрдж рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЙрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдПрдкреАрдЖрдИ рдХреЛ рдЬрд▓реНрджреА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред

рдЕрджреНрдпрддрди: рдЖрдк рдЗрд╕реЗ рдЕрднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

// Could also look into state in the callback form
export function incrementIfOdd() {
  return (dispatch, state) => {
    if (state.counterStore.counter % 2 === 0) {
      return;
    }

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

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

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

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

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

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

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