React-window: Windowscroller

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдЬреБрд▓ре░ 2018  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: bvaughn/react-window

рдЗрд╕ рдкрд░ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рджрд┐рдЦрддрд╛ рд╣реИ this

рдореБрдЭреЗ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ windowscroller рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╢рд╛рдпрдж рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВред

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

ЁЯСЛ help wanted ЁЯШО enhancement

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

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

WindowScroller
https://codesandbox.io/s/vy620pkzzy

WindowScroller рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде
https://codesandbox.io/s/xvl23p7okp

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

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

рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдШрдЯрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдпрд╣ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХрд┐рддрдиреЗ рдЬрдЯрд┐рд▓ рд╣реЛрдВрдЧреЗред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрдЪреНрдЫреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢реБрд░реБрдЖрдд рдХрд┐рд╕реА (рдЖрдк?) рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛ рдЬреЛ рдЗрд╕реЗ рд╕реАрдзреЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ- рдЗрд╕рд▓рд┐рдП рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

WindowScroller
https://codesandbox.io/s/vy620pkzzy

WindowScroller рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде
https://codesandbox.io/s/xvl23p7okp

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдм рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕ рдкрд░ рдХреЛрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ - рдФрд░ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдпреЛрдЬрдирд╛ (рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ) рд╡реИрд╕реЗ рднреА рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдерд╛ред рдореИрдВ рдЕрднреА рднреА рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ рд╣реВрдБ!

рд╣реВ @PascalSenn , рдХреНрдпрд╛ рдЖрдк рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреНрдб рд╕реЗ WindowScroller рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж

рд╣рд╛рдп рдлрд┐рд░ рд╕реЗ @PascalSenn , рдореИрдВ рдПрдХ рдЧреНрд░рд┐рдб рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж

@carlosagsmendes
рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЙрдХреНрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдпрд╣ рд╕рдордЭрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд┐рдб рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдФрд░ рд╕рд░реНрд╡реЛрдкрд░рд┐ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛
scrollTo({scrollLeft: number, scrollTop: number}) => https://react-window.now.sh/#/api/FixedSizeGrid

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛ ...
рдиреЛрдЯ: @PascalSenn рдХреА CSS рдЯреНрд░рд┐рдХ рдХрд╛ рдзреНрдпрд╛рди

// This height will override the window.innerHeight set in JSX : height={window.innerHeight}
.window-scroller-override {
  height: 100% !important;
}

рд╕рд╣рд╛рдпрддрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд┐рдб рдХрд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдирдореВрдирд╛: https://codesandbox.io/s/wq301o8qz7

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

WindowScroller
https://codesandbox.io/s/vy620pkzzy

WindowScroller рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде
https://codesandbox.io/s/xvl23p7okp

рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ window.innerWidth рдФрд░ window.innerHeight рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░, рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ / рдбрд┐рд╡рд╛рдЗрд╕ рджреНрд╡рд╛рд░рд╛ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ (рдФрд░ рдЗрдиреНрд╣реЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреЗ рдкрд░реНрдпрд╛рдкреНрдд рд╕рд╛рдордЧреНрд░реА рд╣реИ), рдХрдЯреМрддреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@bvaughn , рдХреНрдпрд╛ рд╣рдо рд░реЛрд▓рд┐рдВрдЧ рдЧрддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ is рд╡рд░реНрдЪреБрдЕрд▓ рд▓рд┐рд╕реНрдЯ рдХреЛ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдлрд┐рд╕рд▓рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдмрд┐рдирд╛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХ рд╣реИ

@ рдХрд┐рд▓реЛрдЧреНрд░рд╛рдо , рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдпрд╣ InfiniteLoader рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛? рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, WindowScroller onScroll рдмрд╛рд╣рд░реА рджрд╛рдпрд░реЗ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рд░реЗрдлрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ List рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк InfiniteLoader , рддреЛ InfiniteLoader рд▓рд┐рдП рдЪрд╛рдЗрд▓реНрдб рдХреЙрд▓рдмреИрдХ рдЕрдкрдиреЗ рддрд░реНрдХреЛрдВ рд╕реЗ ref рд╣реИ рдФрд░ _that_ рд╕реЗ List рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд░реЗрдлрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдореИрдВрдиреЗ рдЕрдм рддрдХ рдЬреЛ рдХреБрдЫ рднреА рдЖрдЬрдорд╛рдпрд╛ рд╣реИ рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

@mrdanimal , InfiniteLoader рд╕реЗ рдЖрдП рд░реЗрдлрд░реА рдХреЗ рд╕рд╛рде рд╕реВрдЪреА рд░реЗрдлрд░реА рдХрд╛ рдпрд╣ рдЙрддреНрддрд░ рджреЗрдЦреЗрдВ: https://github.com/bvaughn/react-window/issues/417#issuecomment -583867645

рдореИрдВ рдХреБрдЫ рдореБрджреНрджреЛрдВ рдХреЛ @PascalSenn рдХреЗ рдХреЛрдбреИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рддрдп рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рджреЛ рдХреЛ рд╣реА рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬреЛ рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВред рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдБ рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдЕрдЧрд░ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рд╣реЛред

рдлрд┐рдХреНрд╕реНрдбрд╕рд╛рдЗрдЬрд╝рд▓рд┐рд╕реНрдЯ рдЙрджрд╛рд╣рд░рдг: https://codesandbox.io/s/react-window-with-windowscroller-fixedsizelist-xujgi
VariableSizeGrid рдЙрджрд╛рд╣рд░рдг: https://codesandbox.io/s/react-window-with-windowscroller-variablesizegrid-7kbwn

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рдХреЛ рднреА рдПрдХ рд╕рдорд╛рдзрд╛рди рдкрддрд╛ рд╣реИ? рдпрд╣ рдореБрдЭреЗ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рдиреА рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛

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

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

ivan-badmaev picture ivan-badmaev  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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

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