Redux рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рд╕реНрдкрдВрджрди рдкрд░ рдПрдХ рдЖрд╡реЗрджрди рдкрддреНрд░ рд▓рд┐рдЦрдирд╛

рдЫрд╡рд┐


рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реНрд▓рдЯрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реНрдкрдВрджрди рдХреНрдпрд╛ рд╣реИ , рддреЛ рдпрд╣ Google рд╕реЗ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдПрд╕рдбреАрдХреЗ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ Google рдлреВрд╢рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рднреА рд╣реИред

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

рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЖрд╡реЗрджрди рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдЖрдЗрдП рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдереЛрдбрд╝рд╛ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЬрд╛рдПрдВ, рдЪрд▓реЛ Redux рдХреНрдпрд╛ рд╣реИ рдпрд╣ рд╕рдордЭрд╛рдХрд░ рд╢реБрд░реВ рдХрд░реЗрдВред

Redux рдХреНрдпрд╛ рд╣реИ?


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

  1. рд╕рддреНрдп рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕реНрд░реЛрдд - рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреА рдкреВрд░реА рд╕реНрдерд┐рддрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ (рдЬрд┐рд╕реЗ рд╕реНрдЯреЛрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ )ред
  2. рд░рд╛рдЬреНрдп рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ / рд░рд╛рдЬреНрдп рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ - рдЖрд╡реЗрджрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ (рдХрд╛рд░реНрд░рд╡рд╛рдИ) рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдПрдХ рдирдпрд╛ рд░рд╛рдЬреНрдп рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛
  3. рд╢реБрджреНрдз рдХрд╛рд░реНрдпреЛрдВ / рд╢реБрджреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ - рдПрдХ рд╢реБрджреНрдз рдХрд╛рд░реНрдп (рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдпрд╣ рджреБрд╖реНрдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдХрд╛рд░реНрдп рд╣реИ) рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрд╡реЗрджрди рдХреА рдирдИ рд╕реНрдерд┐рддрд┐ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ

рдиреЛрдЯ: рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдкрдХреНрд╖ рдкреНрд░рднрд╛рд╡ рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреНрд╖рдорддрд╛ рд╣реИ: рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛, I / O рд╕рдВрдЪрд╛рд▓рди рдХрд░рдирд╛, рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛, рдФрд░ рдЙрдирдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ред рдпрджрд┐ рдЖрдк рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рднрд╛рд╡ рдХреЗ рд╕рд╛рде рджреЛ рдмрд╛рд░ рдЗрдирдкреБрдЯ рддрд░реНрдХ рдорд╛рдиреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдорд╛рди рд▓реМрдЯрд╛рдП рдЬрд╛рдПрдВред рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЧреИрд░-рдирд┐рдпрддрд╛рддреНрдордХ рдХрд╛рд░реНрдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╢рд╛рдВрдд рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рдХреНрдпрд╛ рд▓рд╛рдн рд╣реИрдВ?

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

Redux рд╕рдордп рдпрд╛рддреНрд░рд╛


Redux рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╡рд╕рд░ рд╣реИ - рдЯрд╛рдЗрдо рдЯреНрд░реИрд╡рд▓! Redux рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде, рдЖрдк рд╕рдордп рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рд╕рдордп рдЗрд╕реЗ рдкреБрдирдГ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рджреЗрдЦреЗрдВ:

рдЫрд╡рд┐

рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде Redux рд╡рд┐рдЬреЗрдЯреНрд╕


рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдирд┐рдпрдо Redux рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдпреВрдирд┐рдбрд╛рдпрд░реЗрдХреНрд╢рдирд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рд╕рдм рдХрд╛рд░реНрд░рд╡рд╛рдИ , рд░рд┐рдбреНрдпреВрд╕рд░ , рд╕реНрдЯреЛрд░ рдФрд░ рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдЖрдЗрдП рдПрдХ рдЖрд╡реЗрджрди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬреЛ рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:

рдЫрд╡рд┐

  1. рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рд╣реИ (рдХреНрд▓рд┐рдХ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЬреЛ 0 рд╣реИ)
  2. рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рджреГрд╢реНрдп рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдХреНрд░реАрдореЗрдВрдЯрдХрд╛рдЙрдВрдЯрд░)
  4. рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдХреНрд╢рди рдХреЛ рдПрдХ рд░реЗрдбреНрдпреВрд╕рд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкрд┐рдЫрд▓реА рд╕реНрдерд┐рддрд┐ (рдХрд╛рдЙрдВрдЯрд░ 0) рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ, рдФрд░ рдПрдХреНрд╢рди (рдЗрдВрдХреНрд░реАрдореЗрдВрдЯрдХрд╛рдЙрдВрдЯрд░) рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рд╕реНрдЯреЗрдЯ рд▓реМрдЯрд╛ рд╕рдХрддрд╛ рд╣реИ (рдХрд╛рдЙрдВрдЯрд░ рдЕрдм 1 рд╣реИ)
  5. рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХ рдирдпрд╛ рд░рд╛рдЬреНрдп рд╣реИ (рдХрд╛рдЙрдВрдЯрд░ 1 рд╣реИ)
  6. рдирдП рд░рд╛рдЬреНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рджреГрд╢реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ

рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╕рднреА рд░рд╛рдЬреНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ ред рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рд░рд╛рдЬреНрдп рд╣реИ, рд░рд╛рдЬреНрдп рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдФрд░ рдПрдХ рдирдпрд╛ рд░рд╛рдЬреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рд░рд┐рдбреНрдпреВрд╕рд░ рд▓реЙрдиреНрдЪ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рд░рд╛рдЬреНрдп рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рджреЗрддрд╛ рд╣реИред рдФрд░ рдХрд╣рд╛рдиреА рдЦреБрдж рдХреЛ рджреЛрд╣рд░рд╛рддреА рд╣реИред

рдЫрд╡рд┐

рдЖрдЗрдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ рдФрд░ рдПрдХреНрд╢рди рдореЗрдВ Redux рдПрдкреНрд░реЛрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ " рд╢реЙрдкрд┐рдВрдЧ рд▓рд┐рд╕реНрдЯ " рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред

рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ Redux рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдо рдПрдХ рд╕рд░рд▓ рд╢реЙрдкрд┐рдВрдЧ рдХрд╛рд░реНрдЯ рдРрдк рдмрдирд╛рдПрдВрдЧреЗред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реЛрдВрдЧреА:

  • рдЦрд░реАрджрд╛рд░реА рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ
  • рдкреВрд░реНрдг рдХреЗ рд░реВрдк рдореЗрдВ рдЦрд░реАрдж рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛
  • рдФрд░ рд╡рд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рднреА рд╣реИ

рдЖрд╡реЗрджрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

рдЫрд╡рд┐

рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ!

рдорд╛рдВрдЧ


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

рдиреЛрдЯ: рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдХрднреА рднреА Flutter рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк Google рд╕реЗ Flutter Codelabs рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддреИрдпрд╛рд░реА


рдлрд╝реНрд▓рдЯрд░ рдХреЗ рд▓рд┐рдП Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ pubspec.yaml рдлрд╝рд╛рдЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

flutter_redux: ^0.5.2 

рдЖрдк рдЗрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ flutter_redux рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдХрд░ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд╕рдВрд╕реНрдХрд░рдг рдерд╛, flutter_redux 0.6.0

рдЖрджрд░реНрд╢


рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддрддреНрд╡реЛрдВ рдХреЗ рдЬреЛрдбрд╝ рдФрд░ рд╕рдВрд╢реЛрдзрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рддрддреНрд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдЯ рдЗрдЯ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯреЗрдЯ рд╕рд┐рд░реНрдл рдХрд╛рд░реНрдЯрд┐рдореНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрдЧреАред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, CartItem рд╕рд┐рд░реНрдл рдПрдХ рд╡рд╕реНрддреБ рд╣реИред

 class CartItem { String name; bool checked; CartItem(this.name, this.checked); } 

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

 class AddItemAction { final CartItem item; AddItemAction(this.item); } class ToggleItemStateAction { final CartItem item; ToggleItemStateAction(this.item); } 

рдлрд┐рд░ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ reducers рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╡реЗ рд╕рд┐рд░реНрдл рдЖрд╡реЗрджрди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ (рдЖрд╡реЗрджрди рд░рд╛рдЬреНрдп рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ) рд▓реЗрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдПрдХ рдирдпрд╛ рд░рд╛рдЬреНрдп рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рджреЛ reducer рддрд░реАрдХреЗ рд╣реЛрдВрдЧреЗ:

 List<CartItem> appReducers(List<CartItem> items, dynamic action) { if (action is AddItemAction) { return addItem(items, action); } else if (action is ToggleItemStateAction) { return toggleItemState(items, action); } return items; } List<CartItem> addItem(List<CartItem> items, AddItemAction action) { return List.from(items)..add(action.item); } List<CartItem> toggleItemState(List<CartItem> items, ToggleItemStateAction action) { return items.map((item) => item.name == action.item.name ? action.item : item).toList(); } 

AppReducers () рд╡рд┐рдзрд┐ рдЙрдЪрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ ред рджреЛрдиреЛрдВ addItem () рдФрд░ toggleItemState () рд╡рд┐рдзрд┐рдпрд╛рдБ рдирдИ рд╕реВрдЪреА рд▓реМрдЯрд╛рддреА рд╣реИрдВ - рдпрд╣ рд╣рдорд╛рд░реА рдирдИ рд╕реНрдерд┐рддрд┐ / рд╕реНрдерд┐рддрд┐ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рд╡рд░реНрддрдорд╛рди рд╕реВрдЪреА рдХреЛ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдИ рд╕реВрдЪреА рдмрдирд╛рддреЗ рд╣реИрдВред

StoreProvider


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

 void main() { final store = new Store<List<CartItem>>( appReducers, initialState: new List()); runApp(new FlutterReduxApp(store)); } 

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

 class FlutterReduxApp extends StatelessWidget { final Store<List<CartItem>> store; FlutterReduxApp(this.store); @override Widget build(BuildContext context) { return new StoreProvider<List<CartItem>>( store: store, child: new ShoppingCartApp(), ); } } 

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, ShoppingCartApp ( ) рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЬреЗрдЯ рд╣реИред

StoreConnector


рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рд╣реИ ... рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдЗрдЯрдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдмрджрд▓рдирд╛ред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ? рдЗрд╕реЗ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ StoreConnector рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕реНрдЯреЛрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрдиреЗ рдпрд╛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╡рд░реНрддрдорд╛рди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

 class ShoppingList extends StatelessWidget { @override Widget build(BuildContext context) { return new StoreConnector<List<CartItem>, List<CartItem>>( converter: (store) => store.state, builder: (context, list) { return new ListView.builder( itemCount: list.length, itemBuilder: (context, position) => new ShoppingListItem(list[position])); }, ); } } 

рдКрдкрд░ рдХреЗ рдХреЛрдб рдХреЛ рдПрдХ StoreConnector рдХреЗ рд╕рд╛рде ListView.builder рд▓рдкреЗрдЯрддрд╛ рд╣реИред StoreConnector рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ (рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ ) рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рд╣рдо рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ рд╣реА рд░рд╛рдЬреНрдп (рд╕реВрдЪреА) рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдЦрд░реАрджрд╛рд░реА рд╕реВрдЪреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рдареАрдХ рд╣реИ, рдЕрдЪреНрдЫрд╛ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбреЗрдЯрд╛ рд╣реИред рдЕрдм, рдХреБрдЫ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ?

рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╣рдо StoreConnector рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗред

 class AddItemDialog extends StatelessWidget { @override Widget build(BuildContext context) { return new StoreConnector<List<CartItem>, OnItemAddedCallback>( converter: (store) { return (itemName) => store.dispatch(AddItemAction(CartItem(itemName, false))); }, builder: (context, callback) { return new AddItemDialogWidget(callback); }); } }typedef OnItemAddedCallback = Function(String itemName); 

рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ StoreConnector рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдЙрд╕реА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде CartItems рд╕реВрдЪреА рдХреЗ рдорд┐рд▓рд╛рди рдХреЗ рдмрдЬрд╛рдп, рд╣рдо OnItemAddedCallback рдореЗрдВ рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░реЗрдВрдЧреЗ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо AddItemDialogWidget рдкрд░ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :

 class AddItemDialogWidgetState extends State<AddItemDialogWidget> { String itemName; final OnItemAddedCallback callback; AddItemDialogWidgetState(this.callback); @override Widget build(BuildContext context) { return new AlertDialog( ... actions: <Widget>[ ... new FlatButton( child: const Text('ADD'), onPressed: () { ... callback(itemName); }) ], ); } } 

рдЕрдм рдЬрдм рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ADD рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди AddItemAction () рднреЗрдЬрддрд╛ рд╣реИред

рдЕрдм рд╣рдо рдПрдХ рддрддреНрд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 class ShoppingListItem extends StatelessWidget { final CartItem item; ShoppingListItem(this.item); @override Widget build(BuildContext context) { return new StoreConnector<List<CartItem>, OnStateChanged>( converter: (store) { return (item) => store.dispatch(ToggleItemStateAction(item)); }, builder: (context, callback) { return new ListTile( title: new Text(item.name), leading: new Checkbox( value: item.checked, onChanged: (bool newValue) { callback(CartItem(item.name, newValue)); }), ); }); } } 

рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо OnStateChanged рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП StoreConnector рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ред рдЕрдм рдЬрдм рднреА рдЭрдВрдбрд╛ рдмрджрд▓рддрд╛ рд╣реИ (рдСрдирдЪреЗрдВрдЬ рд╡рд┐рдзрд┐ рдореЗрдВ), рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдЯреЙрдЧрд▓рдЗрдорд╕реНрдЯреИрдмреНрдпреВрд╢рди рдЗрд╡реЗрдВрдЯ рдХреЛ рдлрд╛рдпрд░ рдХрд░рддрд╛ рд╣реИред

рд╕рд╛рд░рд╛рдВрд╢


рд╡рд╣ рд╕рдм рд╣реИ! рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рд╕рд░рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛, рдЬреЛ рдЦрд░реАрджрд╛рд░реА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ Redux рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдбреВрдм рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ, рд╣рдо рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдирдИ рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рд░рд┐рдбреНрдпреВрд╕рд░ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИред

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

рдЖрд╢рд╛ рд╣реИ рдЖрдкрдХреЛ рдпрд╣ рдкреЛрд╕реНрдЯ рдЕрдЪреНрдЫреА рд▓рдЧреА рд╣реЛрдЧреА!

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


All Articles