Next.js: рд░рд╛рдЬреНрдп рдХреЛ рдЕрдЧрд▓реЗ/рд░рд╛рдЙрдЯрд░ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдЬрдире░ 2017  ┬╖  34рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: vercel/next.js

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдХреЗ рд╕рд╛рде рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:

browserHistory.push({ pathname: "/", state: { message: 'This is a message forwarded in a state.' } })

рдХреНрдпрд╛ рдЕрдЧрд▓реЗ/рд░рд╛рдЙрдЯрд░ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдХреБрдЫ рдореВрд▓реНрдп рдХреЛ рдирдП рдкреГрд╖реНрда рдкрд░ рднреА рдкрд╛рд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

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

рдпрд╣рд╛рдВ рд╡рд╣реА рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рддреЛ Router.push() рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ withRouter рдХреЗ рд╕рд╛рде рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

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

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рддрддреНрдХрд╛рд▓ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВрдЧреЗред

рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЗрд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк nkzawa рдЬреИрд╕реЗ рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдХреЗ рдПрдХ рд╕рдорд╛рди рдЪреАрдЬрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ рдпреВрдЖрд░рдПрд▓ рдХреЛ http://www.example.com/?message=This%20is%20a%20long%20message%20forwarded%20to%20be%20displayed рд╕реЗ рдкреНрд░рджреВрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд░рд╛рдЬреНрдп рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИред

рдЖрдк URL рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП as рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореБрдЭреЗ as рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛, рддреЛ рдкрдердирд╛рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрдердирд╛рдо рдХреЛ props.url.pathname рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рдХреНрд╡реЗрд░реА рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЪреАрдЬреЗрдВ рд╣реИрдВред рд░рд╛рдЬреНрдп рдХреЛ рдкрд╛рд╕ рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рд┐рд░реНрдл _cleaner_ рд╣реИред

рдореИрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ next.js рдкрд░ рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдмрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдирд╣реАрдВ рдЪрд▓рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдорд┐рд▓ рдЧрдП рд╣реИрдВ, рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЕрд╕реБрд╡рд┐рдзрд╛ рдФрд░ рд╡рд╛рдЪрд╛рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реБрдзрд╛рд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдм рдореБрджреНрджрд╛ рд╣реИ .

рдЖрдкрдХреЗ рдирд┐рд╡реЗрд╢ - рд╕рд╣рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдЗрд╕ рдХрд╛рд░рдг рдХреЛ рдмрдВрдж рдХрд░рдирд╛

рдореБрдЭреЗ рдЗрд╕реЗ рд▓рд╛рдП рд╣реБрдП рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕рдордп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рд╕рдорд░реНрдерди рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ?

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдиреЗрдХреНрд╕реНрдЯрдЬ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП

рдореБрдЭреЗ рд╡рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЪрд╛рд╣рд┐рдПред

рдкрд╣рд▓реЗ рдореИрдВ рд╕реАрдЖрд░рдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рд╡рд╣рд╛рдВ рдореИрдВ рд░реВрдЯреЗрдб рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рд╕реНрдЯреЗрдЯ рднреЗрдЬрддрд╛ рдерд╛ред рдореИрдВ nextjs рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрдВ @sergiodxa рдиреЗ рдХреНрдпрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕рдорд░реНрдерди рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдВ рд╡рд╣реА рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рддреЛ Router.push() рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ withRouter рдХреЗ рд╕рд╛рде рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдореБрдЭреЗ рд╡рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди ?

рдореБрдЭреЗ рд╡рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди ?

рдореИрдВ рднреА

рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдЬреБрдбрд╝рд╛ рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ рд╣реИ:

  • рдЬрдм рдореИрдВ рд░рд╛рдЙрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЕрдкрдиреЗ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдкреБрд╢() рдФрд░ рдореИрдВ рдПрдХ рд░рд╛рдЬреНрдп рдХреЛ рдЕрдЧрд▓реЗ рдШрдЯрдХ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдпрд╛ рдХреБрдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдмреБрд░рд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕реАрдзреЗ рд░рд┐рдПрдХреНрдЯ рд╣реБрдХ рдпрд╛ рдкреБрд░рд╛рдиреЗ рд░рд┐рдПрдХреНрдЯ рдЬреАрд╡рдирдЪрдХреНрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдШрдЯрдХ рд╣реИред рдЗрд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдЗрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рдкреГрд╖реНрда рдЦреБрд▓ рдЬрд╛рдПрдЧрд╛ред рд╡рд░реНрддрдорд╛рди next.js рдХреЗ рд╕рд╛рде рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдИрдбреА рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ useEffect рдФрд░ axios рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреЗрдЯрд╛ рд╣реИ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЙрд╕ рдкреГрд╖реНрда рдкрд░ рд░рд╛рдЬреНрдп рднреЗрдЬ рд╕рдХреВрдВред

рдпрд╣ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

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

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

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

рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдЕрдЧрд▓реЗ рдкреГрд╖реНрда рдкрд░ рдФрд░ рдХреЗрд╡рд▓ рдЕрдЧрд▓реЗ рдкреГрд╖реНрда рдкрд░ router.push рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдзрдХреНрдХрд╛ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдореБрдЭреЗ рдХреЛрдИ рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рдорд╛рди рдХреЗрд╡рд▓ рдЙрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред

рдХрдиреЗрдХреНрдЯ-рдлреНрд▓реИрд╢ рдХреЗ рд╕рдорд╛рди рд╣реА

15 рдЬрдирд╡рд░реА 2017 рд╕реЗ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ?
рд╣рдореЗрдВ рд╡рд╣ рд╕реБрд╡рд┐рдзрд╛ рдЪрд╛рд╣рд┐рдП:

рдпрд╣рд╛рдВ рд╡рд╣реА рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рддреЛ Router.push() рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ withRouter рдХреЗ рд╕рд╛рде рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдЗрд╕реЗ nextjs рдореЗрдВ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛

рдпрджрд┐ рдЖрдк рдХреНрд╡реЗрд░реА рдкреИрд░рд╛ рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдЗрд╕ рддрд░рд╣ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

Router.push(`/main?userName=${userName}`, 'main')

рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЖрдк url рдкрд░ рдХреЗрд╡рд▓ /main рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░
console.log(Router.route) рдХреНрд╡реЗрд░реА рджрд┐рдЦрд╛рддрд╛ рд╣реИ

pathname: "/main"
query: {userName: "fadsfasd"}
asPath: "main"

рдУрд╣ рд╣рд╛рдБ, рдпрд╣ рд╕рдЪ рд╣реИред рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдореБрдЭреЗ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд╛рдЙрдЯрд░ рдХреЛ рджреЛ рддрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред react-router рдмрд┐рдирд╛ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ?

рдЬреЛ рд▓реЛрдЧ рдЗрд╕реЗ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдЖрдк Context Api рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Next.js рдПрдХ рдкреНрд░реЛрдк рдХреЗ рд░реВрдк рдореЗрдВ router.push() рдкрд╛рд╕рд┐рдВрдЧ shallow: true рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рд╣реИред
https://nextjs.org/docs/api-reference/next/router#routerpush

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

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП RFC рдирд╣реАрдВ рд▓рд┐рдЦрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ, рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

Router.push({ pathname: '/', query: { message: 'This is a message forwarded in a state.' } }, '/')

2 рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рдФрд░ рдЕрднреА рднреА рд░рд╛рдЬреНрдп рд╕реБрд╡рд┐рдзрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

Router.push({ pathname: '/', query: { message: 'This is a message forwarded in a state.' } }, '/')

рдпрд╣ рдЕрднреА рднреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдореБрдЦреМрдЯрд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдЬреАрдм рдмрд╛рдд рд╣реИред

рдореИрдВ рд░рд┐рдПрдХреНрдЯ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

router.push(
  { pathname: '/hello-world' }, 
  '/hello-world/2', 
  { step: 2 }
);

рдЬрдм рдЖрдк рд╡рд╛рдкрд╕ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреЙрдкрд╕реНрдЯреЗрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░реЛрдк рдореЗрдВ { step: 2 } рд╣реЛрдЧрд╛ред

рд╣рдореЗрдВ рдХреЗрд╡рд▓ router рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВ рд░рд┐рдПрдХреНрдЯ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

router.push(
  { pathname: '/hello-world' }, 
  '/hello-world/2', 
  { step: 2 }
);

рдЬрдм рдЖрдк рд╡рд╛рдкрд╕ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреЙрдкрд╕реНрдЯреЗрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░реЛрдк рдореЗрдВ { step: 2 } рд╣реЛрдЧрд╛ред

рд╣рдореЗрдВ рдХреЗрд╡рд▓ router рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

@likerRr рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рд╕рднреА рд╡рд┐рдХрд▓реНрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ window.history.state ред рддреЛ рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде:
window.history.state == { step: 2 }

@likerRr рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рд╕рднреА рд╡рд┐рдХрд▓реНрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ window.history.state ред рддреЛ рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде:
window.history.state == { step: 2 }

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣реИред рд╡реИрд╕реЗ рднреА, рдЬрдм рддрдХ рдЗрд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рд╕рд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХрднреА рднреА рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдирд┐рд░рд╛рд╢: рдЗрддрд┐рд╣рд╛рд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ (?), рдХрд┐ рдпрд╣ рд▓рдЧрд╛рддрд╛рд░ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк "рдкреАрдЫреЗ"/"рдЖрдЧреЗ" рдмрдЯрди рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЕрдзрд┐рдХрддрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдорд┐рд▓реЗрдЧрд╛ред

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдореБрджрд╛рдп рдХреНрдпрд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдкреГрд╖реНрда рд╕реЗ рджреВрд╕рд░реЗ рдкреГрд╖реНрда рдкрд░ рд╕рдВрдХреНрд░рдордг рдХреЗ рджреМрд░рд╛рди рдЫреЛрдбрд╝ рджреЗрдЧрд╛ рдФрд░ рд╣рдореЗрдВ рдЗрд╕реЗ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреА рдкрд░реЗрд╢рд╛рдиреА рдирд╣реАрдВ рд╣реИред рдФрд░ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ "рдкреАрдЫреЗ/рдЖрдЧреЗ" рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдбреЗрдЯрд╛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ (рдЖрдИрдПрдордУ)ред

рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЕрдЧрд▓реЗ рдЬреЗрдПрд╕ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ

рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
https://github.com/vercel/next.js/issues/771#issuecomment -612018764

1: рд╕рджрд╕реНрдпрддрд╛ рдкреГрд╖реНрда рдореЗрдВ:
рдХреЙрдиреНрд╕реНрдЯ рд╣реИрдВрдбрд▓рдХреНрд▓рд┐рдХ = рдЙрдкрдпреЛрдЧ рдХреЙрд▓рдмреИрдХ ((рдорд╛рдЙрдВрдЯ) => {
рд░рд╛рдЙрдЯрд░.рдкреБрд╢ ( /payment?mount=${mount} , '/ рднреБрдЧрддрд╛рди');
}, []);
2: рднреБрдЧрддрд╛рди рдкреГрд╖реНрда рдореЗрдВ
рдЙрдкрдпреЛрдЧ рдкреНрд░рднрд╛рд╡ (() => {
рдХрд╛рд╕реНрдЯ {
рдХреНрд╡реЗрд░реА: {рдорд╛рдЙрдВрдЯ},
} = рд░рд╛рдЙрдЯрд░;
!рдорд╛рдЙрдВрдЯ && рд░рд╛рдЙрдЯрд░.рдкреБрд╢ ('/ рдЕрднрд┐рдпрд╛рди-рдЕрд╡рд▓реЛрдХрди/рд╕рджрд╕реНрдпрддрд╛');
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('PaymentVM:React.FC -> рдорд╛рдЙрдВрдЯ', рдорд╛рдЙрдВрдЯ);
}, []);

рдЖрдк рдХрдВрд╕реЛрд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ mount рдХрд╛ рдорд╛рди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдФрд░ рд░рд╛рдЙрдЯрд░.рдкреБрд╢ рдореЗрдВ рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рдЧреБрдЬрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛?

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ history.pushState, рд╕рд╛рде рд╣реА рд╕реНрдерд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдЙрдкрдпреЛрдЧрд╕реНрдЯреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдЬрдм рд╣рдо рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо history.pushState рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рде рд╣реА рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдерд╛рди-рд╕реНрдЯреНрд░рд┐рдВрдЧ-рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрдпрддрди рдХреЛ рдЙрдкрдпреЛрдЧ рдкреНрд░рднрд╛рд╡ рд░рди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рдПрдХ рдЬреЗрдПрд╕ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣реИ рдЬреЛ рд╕реНрдерд╛рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрдерд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдШрдЯрдХреЛрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рд╣рдо history.pushState рдХреЗ рдмрд┐рдирд╛ рдЙрд╕реА рдШрдЯрдХ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрда рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реИ рддреЛ expрдХреНрд╕реНрдк рдХреЗ рд▓рд┐рдП), рд╣рдо рд╕реНрдерд╛рди рдХреЛ рдЧрддрд┐рд╢реАрд▓ рдЕрдЧрд▓реА рдХреНрд╡реЗрд░реА рдкрд░рдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред - рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА, рд╕рд┐рд░реНрдл рдХрд╛рдордХрд╛рдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдЬреЛ рд▓реЛрдЧ рдЗрд╕реЗ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдЖрдк Context Api рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Next.js рдПрдХ рдкреНрд░реЛрдк рдХреЗ рд░реВрдк рдореЗрдВ router.push() рдкрд╛рд╕рд┐рдВрдЧ shallow: true рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рд╣реИред
https://nextjs.org/docs/api-reference/next/router#routerpush

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореЗрд░реЗ рдореЗрдВ рдореЗрд░реЗ getServerSideProps рдореЗрдВ, рдореИрдВ рджреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╣рд░ рд▓реЛрдб рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╢рд░реНрдд рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрд╕рдХреЗ рд▓рд┐рдП, Shallow: true рдЬреНрдпрд╛рджрд╛ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрдХ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рддреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд░реЗрдВ getServerSideProps , рдпрд╛ рдЗрд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рди рдХрд░реЗрдВред
рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВ getServerSideProps рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВред рдПрдХ рдкреГрд╖реНрда рдХреА рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдФрд░ рдлрд┐рд░ рджреВрд╕рд░рд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░ рдореЗрдВ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рджреЛрдиреЛрдВ рдХреЙрд▓ рд╕рд░реНрд╡рд░ рдкрд░ рд╣реЛрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░, рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдореГрддрд┐ рдореЗрдВ рдПрдирдПрд╡реА рд▓рд┐рдВрдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд░рд╛рдЬреНрдп рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдЫрд┐рдкреЗ рд╣реБрдП рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдо рдХреЗ рд╕рд╛рде as рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рднреЗрдЬрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░рд╛ рдХреЛрдб рд╣рд░ <Link/> рдХреЗ рд▓рд┐рдП рднрдпрд╛рдирдХ рд╣реЛрдЧрд╛ рдЬреЛ рд╣рдо рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдо рдХреЗ рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИред (рдЕрд╕рд▓ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдПрдХ рдПрдЪрдУрд╕реА рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ href рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд╡реЗрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ <Linke/> рдореЗрдВ рд░рд╛рдЬреНрдп рд╡рд╕реНрддреБ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдЪрдУрд╕реА рдореЗрдВ рд╣реА рд╕рдВрднрд╛рд▓реЗрдВрдЧреЗ)

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

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

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

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

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

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

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