рдкрд░рд┐рджреГрд╢реНрдп: рдпрджрд┐ рдореЙрдбрд▓ рдП рдФрд░ рдореЙрдбрд▓ рдмреА рдХреЗ рдЕрдиреБрд░реВрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреЛ рдкреГрд╖реНрда рдП рдФрд░ рдмреА рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдореЗрдВ рдХреБрдЫ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рд╡рд░реНрддрдорд╛рди рдореЙрдбрд▓ рдХреЛ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рд░рд╛рдЬреНрдпред
рдЬрдм рдореИрдВ рдкреЗрдЬ рдП рдпрд╛ рдкреЗрдЬ рдмреА рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдЕрдЧрд▓реА рдмрд╛рд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЧрдВрджрд╛ рдбреЗрдЯрд╛ рди рдмрди рдЬрд╛рдПред
рдореИрдВрдиреЗ рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд░реЗрдбреНрдпреВрд╕рд░ рд▓рд┐рдЦрд╛ рд╣реИ, рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓рдпреВрдирдорд╛рдЙрдВрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ
рдкреНрд░реЗрд╖рдг ({рдкреНрд░рдХрд╛рд░: ${model.namespace}/рд╕реНрдкрд╖реНрдЯ})
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреЗрдЬ рдП рд╕реЗ рдкреЗрдЬ рдмреА рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореЙрдбрд▓ рдП рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреЗрдЬ рдП рд╕реЗ рдкреЗрдЬ рдмреА рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдкреЗрдЬ рдП рдореЗрдВ рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреЗрдЬ рдмреА рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкреЗрдЬ рдП рдкрд╣рд▓реЗ рд╕реНрдкрд╖реНрдЯ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбрд▓ рдП рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрдм рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╣реЛрдЧрд╛ рдЬрдм рдЕрдиреБрд░реЛрдз рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдореЙрдбрд▓ рдП рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореЙрдбрд▓ рдП рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд╡реНрдпрд╡рд╕рд╛рдп рд╕реЗ рдЧрдВрджрд╛ рдбреЗрдЯрд╛ рд╣реЛрдЧрд╛ред
рдЬрдм рдореИрдВ рдП рдкреЗрдЬ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВ рддреЛ рдХреНрдпрд╛ рдореИрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рд░рджреНрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╛ рдХрд┐рд╕реА рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╕рднреА рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рд░рджреНрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? (рд░реЗрдбрдХреНрд╕-рд╕рд╛рдЧрд╛ рдореЗрдВ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди)
v2.2.3
рдЖрдк рдореЙрдбрд▓ рдХреА рд╕рджрд╕реНрдпрддрд╛ рдореЗрдВ рд░реВрдЯрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдореЙрдбрд▓ A рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рддрдм рд╕рд╛рдлрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдкреГрд╖реНрда рдПрдХ рдЧреИрд░-A рдкреГрд╖реНрда рд╣реЛ (рдПрдХ рдкреГрд╖реНрда рдЫреЛрдбрд╝реЗрдВ) рдпрд╛ рдПрдХ рдкреГрд╖реНрда (рдПрдХ рдкреГрд╖реНрда рджрд░реНрдЬ рдХрд░реЗрдВ)ред
рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЖрдЬрдорд╛рдпрд╛ рд╣реИред рд░рд╛рдЬреНрдп рдХреЛ рд╕реНрд╡рдпрдВ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдпрд╛ рддреЛ рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓ рдореЗрдВ рд╕рд╛рдлрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЬрдм рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдореЙрдирд┐рдЯрд░ рд░реВрдЯрд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореЛрдбрд▓ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдСрдкрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рдЗрд╕реЗ рдЕрднреА рднреА рдореЛрдбрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд┐рдЫрд▓реЗ рд╡реНрдпрд╡рд╕рд╛рдп рд╕реЗ рдЧрдВрджрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред
рдореИрдВ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдореЗрдВ рд░реВрдЯрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рднреА рдХрд░рддрд╛ рд╣реВрдВред рдЬрдм рдореИрдВ рдкреЗрдЬ рдП рдХреЛ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдореЙрдбрд▓ рдП рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдкреЗрдЬ рдП рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рдФрд░ рдореЙрдбрд▓ рдП рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рдмреЗрдХрд╛рд░ рд╣реИред рдЕрдЧрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрдЪрд╛рд░ рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдореЙрдбрд▓ рдП рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИ, рдбреЗрдЯрд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рднрд▓реЗ рд╣реА рдпрд╣ рдореЙрдбрд▓ рд╡реНрдпрд╡рд╕рд╛рдп рджреНрд╡рд╛рд░рд╛ рдЕрдВрддрд┐рдо рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рдпрд╛ рдирдпрд╛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореЙрдбрд▓ред
рддреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдореЙрдбрд▓ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╕рднреА рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рд░рджреНрдж рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рд╕рд▓рд╛рд╣ рд▓реЛред
рдореБрдЭреЗ рдореВрд▓ рдкреЛрд╕реНрдЯрд░ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИред рдШрдЯрдХ рдХреА рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж рд╣реЛрдиреЗ рдкрд░ рдореИрдВ рдЕрдзреВрд░рд╛ рдкреНрд░рднрд╛рд╡ рд░рджреНрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рдерд╛ред рдбреАрд╡реАрдП рдЗрд╕ рддрд░рд╣ рдХреА рдПрдкреАрдЖрдИ @sorrycc рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдХреНрдпрд╛ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рд░рджреНрдж рдХрд░рдирд╛ рдФрд░ рд╕рд╛рдЧреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ
@dlamon рдХреЛ рдЙрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдорд╛рд░реНрдЧ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рд╕рдлрд╛рдИ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдХреНрдпрд╛ рдЕрдм рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ?
рд░реВрдЯ рд╕реНрд╡рд┐рдЪ рдХреЗ рджреМрд░рд╛рди @KyrieChen рдХреЗ рд╕рд╛рдл рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░реВрдЯ рд╕реНрд╡рд┐рдЪ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрдЪрд╛рд░ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕рдВрдЪрд╛рд░ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдЧрдВрджреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдл рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдпреВрдпреВрдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдк-рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рд▓реЗрдирджреЗрди рдХреЗ рдЕрдиреБрд░реВрдк рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдПрдХ рд▓реЗрдирджреЗрди рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реВрдВ (рдЬрдм рдХреЙрдореНрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓рдорд╛рдЙрдВрдЯ), рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд░реНрддрдорд╛рди рд▓реЗрдирджреЗрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреВрдпреВрдЖрдИрдбреА рд▓рд┐рдЦрд╛ рд╣реИ рдФрд░ рд▓реЗрди-рджреЗрди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (componentWillUnmount)ред рдиреАрдЪреЗ рдореЙрдбрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рдорд╛рди:
рдпрджрд┐ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддреЗ рд╕рдордп рд╕реНрдкрд╖реНрдЯ рдореЙрдбрд▓ рдХреЗ рдмрд╛рдж рд╕рдВрдЪрд╛рд░ рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рд░реЗрдбреНрдпреВрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдпреВрдпреВрдЖрдИрдбреА рдкрд┐рдЫрд▓реЗ рд▓реЗрдирджреЗрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдпреВрдпреВрдЖрдИрдбреА рд╣реИ, рддреЛ рдЧрдВрджрд╛ рдбреЗрдЯрд╛ рдкрд┐рдЫрд▓реЗ рд▓реЗрдирджреЗрди рдХреЗ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╣реЛрдЧрд╛ рдЕрдЧрд▓реЗ рд▓реЗрди-рджреЗрди рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдирд╣реАрдВред рдкреНрд░рднрд╛рд╡ред
рд▓реЗрдХрд┐рди рдпрд╣ рддрд░реАрдХрд╛ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдкрд╣рд▓рд╛, рдпрд╣ рддрд░реНрдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рдирд┐рд░реНрдгрдп рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреЛрдб рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЬреЛ рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рддреНрддреАрдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ, рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧрдВрджреЗ рдбреЗрдЯрд╛ рд╕реЗ рдбрд░ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣ рддрд░реАрдХрд╛ рдЪреБрдирддрд╛ рд╣реВрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЗрдбрдХреНрд╕-рд╕рд╛рдЧрд╛ рдореЗрдВ рд░рджреНрдж рдкреНрд░рднрд╛рд╡ рддрдВрддреНрд░ рдХреЗ рд╕рдорд╛рди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбреАрд╡реАрдП рдЕрдм рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ @цИС
@dlamon рдореИрдВ рднреА рдЗрд╕рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдореИрдВрдиреЗ рдЦреБрдж рдПрдХ рдбреЗрдореЛ рд▓рд┐рдЦрд╛ рдерд╛, рдФрд░ рдореБрдЭреЗ рдереЛрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ https://codesandbox.io/s/yqwqpmvwvj
рд░рджреНрдж рдХрд░реЗрдВ namespace
рд╕реЗ products
рд╕реЗ model
рдореЗрдВ effect
рд╡рд┐рдзрд┐:
dispatch({ type: 'products/@<strong i="10">@CANCEL_EFFECTS</strong>' });
рдХреНрдпрд╛ рдпрд╣ рдХреЛрдб рд╣реИ?
yield sagaEffects.fork(function*() {
yield sagaEffects.take(`${model.namespace}/@@CANCEL_EFFECTS`);
yield sagaEffects.cancel(task);
});
@ wss1942 рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдЬрдорд╛рдпрд╛ред рдпрджрд┐ рдкреНрд░реЗрд╖рдг ({type:'products/@ @CANCEL_EFFECTS '}) рд╕рдВрдмрдВрдзрд┐рдд рдореЛрдбрд▓ рдореЗрдВ рдкреНрд░рднрд╛рд╡ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░ рджреЗрдЧрд╛ред #796 . рд╕реЗ рдорд┐рд▓рддрд╛-рдЬреБрд▓рддрд╛
@dlamon dva рдПрдХ рдкреНрд░рднрд╛рд╡ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореЙрдбрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдХрдИ рдЧрд╛рдерд╛рдПрдБ рд▓рд┐рдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
namespace: 'products',
effects: {
*start(){},
*stop(){},
watchLogin: [
function* ({ take, put, call, cancel, fork, cancelled }) {
yield take('start');
const timerTask = yield fork(timer)
const bgSyncTask = yield fork(bgSync)
yield take('stop')
yield cancel(bgSyncTask)
yield cancel(timerTask)
function* bgSync() {
try {
while (true) {
const result = yield call(delay, 5 * 1000);
yield put({ type: 'stop' })
}
} finally {
if (yield cancelled())
yield put({ type: 'log', payload: 'fetchЁЯЫС' })
}
}
function* timer(time) {
let i=0;
while (true) {
yield put({ type: 'log', payload: i++ })
yield delay(1000)
}
}
},
{ type: 'watcher' },
],
}
bgSync рдЖрдкрдХрд╛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛рд░реНрдп рд╣реИ, рдЖрдк рдХрд╛рд░реНрдп рдХреЛ рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ : рдХрд╛рд░реНрдп рдХреЛ рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрдн рдФрд░ рд░рджреНрдж рдХрд░реЗрдВ: рд░реЛрдХреЗрдВ ред рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рднрд╛рд╡ рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдп рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╣реИ, рддреЛ рдЙрд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдкрд░реЗрд╢рди рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, axios рдХреЛ axios.CancelToken рдХреЗ рд╕рд╛рде рд░рджреНрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
@ wss1942 рдзрдиреНрдпрд╡рд╛рдж!
рдЗрд╕ рддрд░рд╣, рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рд░рджреНрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдкрд░реЗрд╢рд╛рдиреА рд╡рд╛рд▓рд╛ рд╣реИред рдЖрдк рд╕реАрдзреЗ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреАрд╡реАрдП рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рднрд╛рд╡ред рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рдкреВрд░реНрдг рдореЙрдбрд▓ рдХреЛрдб рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛
import { getProduct } from '@/services/Products';
import { isRespSucc, showErrorMsg } from '@/utils/utils';
const initState = {};
export default {
namespace: 'product',
state: initState,
effects: {
/**
хЬиф╕дф╕к Effects ф╣ЛщЧ┤шзжхПСф╕Аф╕кчлЮш╡Ыя╝Иraceя╝Й
хжВцЮЬtaskхЕИч╗УцЭЯя╝МчлЮш╡Ыч╗УцЭЯуАВ
хжВцЮЬtaskцЬкч╗УцЭЯцЧ╢цФ╢хИ░cancelя╝Мrace effect х░ЖшЗкхКихПЦц╢И taskуАВ
*/
*cancelable({ task, payload }, { call, race, take }) {
yield race({
task: call(task, payload),
cancel: take('cancel'),
});
},
/**
хПЦц╢ИцЙАцЬЙцЬкхоМцИРчЪДф╗╗хКбя╝Мх╣╢цЙзшбМцХ░цНоц╕ЕчРЖ
*/
*clear(_, { put }) {
yield put.resolve({ type: 'cancel' });
yield put({ type: 'clearState' });
},
*getProduct({ payload }, { call, put, cancelled }) {
// eslint-disable-next-line
yield put.resolve({ type: 'cancelable', task: getProductCancelable, payload });
function* getProductCancelable(params) {
try {
// ш░ГчФич╜Сч╗Ьшп╖ц▒В
const response = yield call(getProduct, params);
// ш┐ФхЫЮч╗УцЮЬхИдцЦн
if (!isRespSucc(response)) {
showErrorMsg(response);
return;
}
// хПЦхА╝
const { productName } = response.data;
// ш░ГчФиreducerхнШхА╝
yield put({
type: 'saveState',
payload: { productName },
});
} finally {
if (yield cancelled()) {
// TODO: хПЦц╢Ич╜Сч╗Ьшп╖ц▒В
}
}
}
},
*getCity(_, { call, put, cancelled }) {
// eslint-disable-next-line
yield put.resolve({ type: 'cancelable', task: getCityCancelable });
function* getCityCancelable() {
// TODO: хЕ╖ф╜УхоЮчО░
}
},
reducers: {
saveState(state, { payload }) {
const newState = { ...state, ...payload };
return newState;
},
clearState() {
return initState;
},
},
};
рд▓реЗрди-рджреЗрди рдЫреЛрдбрд╝рддреЗ рд╕рдордп (componentWillUnmount), рдбрд┐рд╕реНрдкреИрдЪ рдХреНрд▓рд┐рдпрд░ рд╡рд░реНрддрдорд╛рди рдореЙрдбрд▓ рдореЗрдВ рд╕рднреА рдЕрдзреВрд░реЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рд░рджреНрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ getProductLoading рдФрд░ getCityLoading рдХрд╛ рднреА рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
componentWillMount() {
const { dispatch } = this.props;
dispatch({
type: 'product/getProduct',
payload: {
productNumber: '123456',
},
});
dispatch({
type: 'product/getCity',
});
}
componentWillUnmount() {
const { dispatch } = this.props;
dispatch({
type: 'product/clear',
});
}
function mapStateToProps(state) {
return {
getProductLoading: state.loading.effects['product/getProduct'],
getCityLoading: state.loading.effects['product/getCity'],
};
}
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@ wss1942 рдзрдиреНрдпрд╡рд╛рдж!
рдЗрд╕ рддрд░рд╣, рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рд░рджреНрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдкрд░реЗрд╢рд╛рдиреА рд╡рд╛рд▓рд╛ рд╣реИред рдЖрдк рд╕реАрдзреЗ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреАрд╡реАрдП рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рднрд╛рд╡ред рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рдкреВрд░реНрдг рдореЙрдбрд▓ рдХреЛрдб рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛
рд▓реЗрди-рджреЗрди рдЫреЛрдбрд╝рддреЗ рд╕рдордп (componentWillUnmount), рдбрд┐рд╕реНрдкреИрдЪ рдХреНрд▓рд┐рдпрд░ рд╡рд░реНрддрдорд╛рди рдореЙрдбрд▓ рдореЗрдВ рд╕рднреА рдЕрдзреВрд░реЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рд░рджреНрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ getProductLoading рдФрд░ getCityLoading рдХрд╛ рднреА рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред