Redux - рд░рд┐рдбреНрдпреВрд╕рд░ рддрд░реНрдХ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛


рдЗрди рджрд┐рдиреЛрдВ рдореИрдВ redux'a рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдмрд╣реБрдд рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬрд╣рд╛рдВ, рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ reducers, рдХрд╛рд░реНрд░рд╡рд╛рдИ, рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕рд┐рд░ рдореЗрдВ рд░рдЦрдиреЗ рдФрд░ рддрд░реНрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдХрдард┐рди рдХрд╛рдо рдмрди рдЧрдпрд╛ред рдФрд░ ... рдпреВрд░реЗрдХрд╛, рдпрд╣ рд╡рд┐рдЪрд╛рд░ Redux рддрд░реНрдХ рдХреЗ рд▓реЗрдЦрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рдерд╛ред рд╢рд╛рдпрдж рдЕрдкрдиреА рдмрд╛рдЗрдХ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреА рдмрд╛рдЗрдХ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ? рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмрд╛рдд рд▓реЗрдЦрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рд╕рдорд░реНрдерди рд▓рд┐рдЦрдирд╛ рд╣реИред рдореБрдЭреЗ рдЕрдкрдиреЗ redux рд▓реЙрдЬрд┐рдХ рдХреЗ рдЕрдкрдиреЗ рдирдЬрд░рд┐рдпреЗ рдХреЛ рдереЛрдбрд╝рд╛ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред


рд╢реБрд░реБрдЖрдд


рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдХрдо рдХрд┐рдпрд╛ рд╣реИ:


//   import { TODO } from './actions/const'; ..... //      .... //    reducer function todoApp(state = initialState, action) { switch (action.type) { case TODO.SET_VISIBILITY_FILTER: return Object.assign({}, state, { visibilityFilter: action.filter }) case TODO.ADD_TODO: return Object.assign({}, state, { todos: [ ...state.todos, { text: action.text, completed: false } ] }) case TODO.TOGGLE_TODO: return Object.assign({}, state, { todos: state.todos.map((todo, index) => { if (index === action.index) { return Object.assign({}, todo, { completed: !todo.completed }) } return todo }) }) ...          ...            ... default: return state } } 

Redux рдкрд░ рдбреЙрдХ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ ред


рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИ:


 //   import { TODO } from './const'; export const addTodo = (value) => ({ type: TODO.ADD_TODO, payload: value }) 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрдИ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред


BOOL


рдореИрдВ рдЙрд╕ рдЙрдиреНрдорд╛рдж рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рдХреЛрдб рдкрдврд╝рддреЗ рд╕рдордп рдЕрдиреБрднрд╡ рд╣реЛрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдбрд┐рдмрдЧрд┐рдВрдЧ рдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ред


  • рдЦреЛрдЬ - рдЖрдкрдХреЛ рд╣рд░ рд╕рдордп Ctrl + F рдФрд░ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ Ctrl + Shift + F рджрдмрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
  • рддреБрд░рдВрдд рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕реЗ рдкреИрд░ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдКрдкрд░ рдХреЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╕реЗ рдмрд╣рддреА рд╣реИред
  • рдирд╣реАрдВ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░рдВрддрд░ рд╣реИред рдирд╣реАрдВ, рдореИрдВ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рд╡реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рдХрдИ рд╕реЗ рд╕рдорд╡рд░реНрддреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдПрдХ рдирд░рдХ рд╣реИред
  • рддрд░реНрдХ рдзреБрдВрдзрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдореЗрдВ рдХреНрд░рд┐рдпрд╛ рдХреЗ рдПрдХ рд╕реНрдерд╛рди рдкрд░, рддреАрд╕рд░реЗ (рд╡реИрдХрд▓реНрдкрд┐рдХ) рд╕реНрдерд┐рд░рд╛рдВрдХ рдореЗрдВ рдЗрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗрд╡рд▓ рдЙрди рджреЛрдиреЛрдВ рдХреЛ рд╣реЛрддреА рд╣реИред
  • рд╡рд┐рдХрд╛рд╕ рдпрд╛ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдореБрдЭреЗ рдмрд╣реБрдд рд╕реА рдлрд╛рдЗрд▓реЗрдВ рдЦреБрд▓реА рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдКрдкрд░ рдХреЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╕реЗ рдмрд╣рддреА рд╣реИред
    рдЦреИрд░, рдЖрджрд┐ред

рддрд░реНрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐


рд╢рд╛рдпрдж рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдЕрдЬреАрдм рдФрд░ рдЪреМрдВрдХрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣реА рд╡рд╣ рдЬрдЧрд╣ рд╣реИред рдореИрдВ рдЕрдкрдирд╛ рдЦрд╛рдХрд╛ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред


рдХрдо рдХрд░рдиреЗ


рдЧреВрдЧрд▓ рдкрд░ рдЬрд╛рд╕реВрд╕реА рдХреА


рдЧрд┐рдпрд░ - рдПрдХ рддрдВрддреНрд░ рдЬреЛ рдЯреЛрдХрд╝ рдФрд░ рд╢рдХреНрддрд┐ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЧрд┐рдпрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдиреЛрдб рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬрди рдХреНрд░рд╛рдВрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред

рдпрд╣реА рд╣реИ, рдЗрд╕ рдкрд░ рд╢рд╛рдлреНрдЯ рдореЗрдВ рдПрдХ рдЧрд┐рдпрд░ рд╣реИ, рдпрд╣ рдЧрд┐рдпрд░ рджреВрд╕рд░реЗ рдЧрд┐рдпрд░ рдХреЛ рд░реЛрдЯреЗрд╢рди рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдЗрд╕рдХреЗ рд╢рд╛рдлреНрдЯ рдХреЛ рдШреБрдорд╛рддрд╛ рд╣реИред рд╣рдо рд╢рд╛рдлреНрдЯ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЧрд┐рдпрд░ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рди рдХрд┐ рдПрдХ рдмрдВрдж рдореЙрдбреНрдпреВрд▓, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред


рдпрджрд┐ рдЖрдк рд░реВрдкрдХ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдлреНрдЯ рдХреНрд░рд┐рдпрд╛ рд╣реИ рдФрд░ рдЧрд┐рдпрд░ рддрд░реНрдХ рд╣реИред рдпрд╣ рдпрд╣рд╛рдВ рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ рдХрд┐ рдЧрд┐рдпрд░рдмреЙрдХреНрд╕ рдЯреЛрдХрд╝ рдХреЗ рд╕рдВрдЪрд░рдг рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдбреЗрдЯрд╛ред рдЗрд╕реЗ рддрдВрддреНрд░ рдХреЗ рдЖрджрд░реНрд╢ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдХрд╛рд░реНрдп


рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╕реНрд╡рдпрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИ, рдФрд░ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕ рдКрд░реНрдЬрд╛ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛)ред


рдФрд░ рдЗрд╕рд▓рд┐рдП рдЪрд▓реЛред рдореЗрд░реА рдмрд╛рдЗрдХ


рдХрдо рдХрд░рдиреЗ:


 export function todoApp(state = initialState, action) { if (typeof action.func === 'function') { return action.func(state); } } 

рд╣рд╛рдБ рдпрд╣ рд╕рдм рдореЗрд░реЗ reducer рд╣реИред рдЕрднреА рд╢рд╛рдпрдж рдкреИрдЯрд░реНрди рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдВрддрд░ рд╣реЛрдЧрд╛, рдХреИрд╕реЗ? рд╣рдо рддрд░реНрдХ reducer'a рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рд▓рд┐рдпрд╛ ..? рд╣рд╛рдВред рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ, рд╣рдордиреЗ рддрд░реНрдХ рдХреЛ reducer'a рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рд▓рд┐рдпрд╛ рд╣реИ !!!


рдЖрдЗрдП рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдПрдХреНрд╢рди рдкрд░:


 export function addTodo = (value) => ({ type: 'ADD_TODO' , payload: value, func: (state) =>({...state, value}) }) } 

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


рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд╣рдордиреЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рд╣рд╛рдБ рдФрд░ рд╕реНрд╡рд┐рдЪ рднреАред рдЬрд┐рд╕рдиреЗ Reducer'e рдореЗрдВ O (1) рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред


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


рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдореИрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред



рд╣реЛрд╢рд┐рдпрд╛рд░ рд░рд╣реЛред beee

Source: https://habr.com/ru/post/hi440940/


All Articles