рдирдорд╕реНрддреЗ,
рдореЗрд░реЗ рдкрд╛рд╕ рд╕реВрдЪреА рджреГрд╢реНрдп рд╣реИ рдЬреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдиреАрдп рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рджреВрд░рд╕реНрде рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ ListView.DataSource рдХреЗ рд▓рд┐рдП рдЖрд░рдВрднрд┐рдХ рд╣реИрдВред рдпрд╣ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдореЗрд░реЗ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реЗрдЯ рд╣реИ рдЬреЛ ListView рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рдФрд░ ListView рдХреЛ рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рджреВрд░рд╕реНрде рдбреЗрдЯрд╛ рдХрдм рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдирдП рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рдХреНрд▓реЛрдирд╡рд┐рдерд░реЛ рдФрд░ рд╕реЗрдХреНрд╢рди рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░реЙрд▓ рдХреЗ рдмрд╛рдж рдирдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдпрд╣ рдмрдЧ рд╣реИ рдпрд╛ рдореБрдЭреЗ ListView рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рдХреИрд╕реЗ рдордЬрдмреВрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ 0.5 рдХреЗ рд╕рд╛рде рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди 0.6 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЕрдиреБрд╕рд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред
+1
рдареАрдХ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред 0.5 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди 0.6 рдХреЗ рд╕рд╛рде рдЯреВрдЯ рдЧрдпрд╛ред
рдЗрд╕реЗ 0.7 . рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдореИрдВ рд╡рд╣реА рд╕рдЯреАрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдХреНрд▓реЛрдирд╡рд┐рдерд░реЛ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди cloneWithRowsandSections рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓реЛрдирд╡рд┐рдерд░реЛрдЬрд╝реИрдВрдбрд╕реЗрдХреНрд╢рди 0.7 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?
рд╕рд╛рде рд╣реА, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓рд┐рд╕реНрдЯрд╕рд╛рдЗрдЬ рдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВ - рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП 0.7 рдореЗрдВ рдЪреАрдЬреЗрдВ рддрдп рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдмрдбрд╝рд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА рдЖрдХрд╛рд░ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ 0.7 рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдХреНрд░реЗрддрд╛ рдирд┐рд░реНрднрд░рддрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдореИрдВ рдЖрдкрдХреЛ 0.7 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдЕрдЧрд░ рдХреЛрдИ рдЬрд▓реНрджреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ :)
рд╕рдВрд╕реНрдХрд░рдг 0.6 рдореЗрдВ рдХреНрд▓реЛрдирд╡рд┐рдерд░реЛ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, 0.5 рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ред
0.7 рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИред рдЗрд╕рдХреА рдПрдХ рдмрд╛рд░ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓рд┐рд╕реНрдЯрд╕рд╛рдЗрдЬ рдХреЛ рдкрд╣рд▓реЗ рдПрдХ рдЙрдЪреНрдЪ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдорджрдж рдирд╣реАрдВ рдХреА рдереАред
0.7 . рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛
0.7.1 . рдореЗрдВ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ
рд╕рдВрд╕реНрдХрд░рдг 0.7.1 . рдореЗрдВ рдХреНрд▓реЛрдирд╡рд┐рдерд░реЛ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг
рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ 0.7.1 рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
0.8.0 рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЕрднреА рднреА cloneWithRows
рдмрдЬрд╛рдп cloneWithRowsAndSections
cloneWithRows
рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛рдорд┐рд▓? рдореЗрд░реЗ рд▓рд┐рдП 0.8.0 рдореЗрдВ рдирд╣реАрдВ рд╣реИред
@coderdave рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ cloneWithRows
рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реА рдЧрд▓рддреАред
@sahrens @ide @michalraska рдореЗрд░рд╛ scrollY
рдкреНрд░реЛрдк рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рдерд╛ред рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдСрдлрд╝рд╕реЗрдЯ рдХреЛ рдЕрдкрдиреЗ рдШрдЯрдХ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬреИрд╕реЗ:
renderRow: function (rowData, sectionID, rowID) {
return (
<Row
key={rowData.id} data={rowData} scrollY={this.state.contentOffset}
/>
)
});
рд▓реЗрдХрд┐рди рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдареАрдХ рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ scrollY
рдкреНрд░реЛрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реАред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреНрдп рд╕рднреА рдореБрджреНрджреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ?
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛:
var shouldUpdateRow = rowCount >= this.state.prevRenderedRowsCount && dataSource.rowShouldUpdate(sectionIdx, rowIdx);
рдкреНрд░рддрд┐
var shouldUpdateRow = true;
рдореИрдВрдиреЗ рдЗрд╕реЗ 0.11.0-рдЖрд░рд╕реА рдкрд░ рднреА рджреЗрдЦрд╛ рд╣реИред
рдпрд╣рд╛рдВ рджреЛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрдВрдХреНрддрд┐рдпрд╛рдБ: https://rnplay.org/apps/d3DM6A
рдкрдВрдХреНрддрд┐рдпрд╛рдБ + рдЕрдиреБрднрд╛рдЧ: https://rnplay.org/apps/xnyaYw
рдореИрдВ рдЬрд┐рд╕ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛, рд╡рд╣ рд╕реВрдЪреА рджреГрд╢реНрдп 1pt рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдерд╛ рдЬрдм рдпрд╣ рдорд╛рдЙрдВрдЯ рд╣реЛрддрд╛ рд╣реИред
let listViewScrollView = this.refs.listView.getScrollResponder();
listViewScrollView.scrollTo(1);
рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП rnplay.org рдкрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдВрджрд░ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЕрд╕рдореНрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрд░реНрдЦрддрд╛ рднрд░рд╛ рдкреНрд░рд╢реНрдиред рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдЖрдИрдУрдПрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдЬрдм рдиреЗрд╡рд┐рдЧреЗрдЯрд░рдЖрдИрдУрдПрд╕ рдХреЗ рдмрдЪреНрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реВрдЪреА рджреГрд╢реНрдп рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ/рдкреНрд░рддрд┐рдкрд╛рджрди, рдкреИрдбрд┐рдВрдЧ рдЗрддреНрдпрд╛рджрд┐ред
@jaygarcia рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг рдиреЗрд╡рд┐рдЧреЗрдЯрд░рдЖрдИрдУрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореИрдВ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдЖрдИрдУрдПрд╕ рдХреЗ рдмрдЬрд╛рдп рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдореЗрд░реЗ рд▓рд┐рдП +1, рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред рдореИрдВ 0.11 рдкрд░ рд╣реВрдВ рдФрд░ рдореИрдВ рдХреНрд▓реЛрдирд╡рд┐рдерд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ @christopherdro рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдкрдиреЗ рдЖрдЗрдЯрдо рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рд╡реЗ рдмрдбрд╝реЗ рд╣реИрдВ)ред
рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрд╕рдкрд╛рд╕ рдХрд╛ рдХрд╛рдо рдЗрд╕ рдмрдЧ рдХреЗ рд╕рдорд╛рдзрд╛рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ: https://github.com/facebook/react-native/issues/1878 рддреЛ рдореЗрд░рд╛ рдЕрдВрддрд┐рдо рдХреЛрдб рд╣реИ:
listViewScrollView.scrollWithoutAnimationTo(80);
listViewScrollView.scrollWithoutAnimationTo(-80);
рдареАрдХ рд╣реИ, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдореЗрдВ рдХреБрдЫ рд╡рд┐рдЪрд┐рддреНрд░ рдмрдЧ рдорд┐рд▓реЗ: рдорд╛рдЙрдВрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рдПрдХ рдСрдирд╕реНрдХреНрд░реЙрд▓ рдИрд╡реЗрдВрдЯ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬрд┐рд╕рдиреЗ рдЙрди рджреГрд╢реНрдпреЛрдВ рдкрд░ рдореЗрд░реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдХреНрд░реЙрд▓ рдСрдлрд╝рд╕реЗрдЯ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред
рдЕрднреА рднреА 0.12.0 рдореЗрдВ рдПрдХ рдмрдЧред рдпрд╣рд╛рдБ рджреГрд╢реНрдп рдкрджрд╛рдиреБрдХреНрд░рдо рд╣реИ:
0.11.0 рдкрд░ @Sidnicious рдХреЗ рд╕рдорд╛рди рдореБрджреНрджреЗред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рд╕реЗ рдореЗрд░реЗ рдРрдк рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЧрд░ рдореИрдВ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж ListView
рд╕реЗ рдмрд╛рд╣рд░ Navigator
рдкрджрд╛рдиреБрдХреНрд░рдоред
рдореИрдВ 0.13.0-rc
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ 0.13.1
:
constructor(props) {
super(props);
var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state = {dataSource: ds.cloneWithRows(Array.apply(null, {length: 100}).map(Number.call, Number))};
}
render() {
return (
<ListView
style={{paddingTop: 20, flex: 1}}
dataSource={this.state.dataSource}
renderRow={(rowData) => <Text>{rowData}</Text>}
/>
)
рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ 0.14.2
рд╕реЗ 0.16.0-rc
рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп рджрд┐рдЦрд╛рдИ рджреАред рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдлрд┐рдХреНрд╕ pageSize
рдкреНрд░реЛрдк рдХреЛ ListView рдкрд░ 3 рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдерд╛ред 2 рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди 3 рдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред
_(уГД)_/┬п
0.15.0 рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдБ рдПрдХ рд╣реА рдореБрджреНрджрд╛, рд╕рднреА рддрд░рдХреАрдмреЗрдВ рдЖрдЬрдорд╛рдИрдВ, рдХреЛрдИ рдХрд┐рд╕реНрдордд рдирд╣реАрдВред рдЖрдИрдУрдПрд╕ 9.1 рдЖрдИрдлреЛрди 6
@nicklockwood - рдХреНрдпрд╛ рдЖрдк рдпрд╣рд╛рдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рднреА рдХреБрдЫ рдмрдЧ рд╣реИрдВред
0.14, рд╡рд╣реА рдореБрджреНрджрд╛
рдПрдХ рд╕рдорд╛рди LisView рд╕рдорд╕реНрдпрд╛ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдирд╛: https://github.com/facebook/react-native/issues/4728
рдЗрд╕реА рддрд░рд╣ рдХреЗ рдПрдХ рдФрд░ рдореБрджреНрджреЗ рдХреЛ рдЬреЛрдбрд╝рдирд╛: https://github.com/facebook/react-native/issues/4179
рдореИрдВ рдЗрд╕реЗ 0.16.0 рдореЗрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕реЗ рдЙрддреНрдкрд╛рдж рджрд░реНрдж рдкрд░ рд░рдбрд╛рд░ рдкрд░ рд░рдЦрд╛ рд╣реИ? рдпреЗ рдХрд╛рдлреА рджрд░реНрджрдирд╛рдХ рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ. :/
рдореИрдВрдиреЗ рдЗрд╕реЗ Product Pains рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдЕрднреА рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рддреЛ рдЖрдк рдЗрд╕реЗ рд╡рд╣рд╛рдВ рд╡реЛрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред
0.16, рд╡рд╣реА рдореБрджреНрджрд╛
рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдкрд░ рдХреНрд▓реЛрдирд╡рд┐рдерд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА 0.17 рдореЗрдВ рдмрдиреА рд╣реБрдИ рд╣реИред рд╕реВрдЪреА рдХреЗрд╡рд▓ рддрднреА рдЖрдЗрдЯрдо рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИ рдЬрдм рдЗрд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реЛред
рдореИрдВ рдЗрд╕реА рдореБрджреНрджреЗ рдХреЛ 0.17 рдкрд░ рджреЗрдЦ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди removeClippedSubviews
рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
+1
рдореИрдВ 0.17 рдкрд░ рдЗрд╕реА рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣рдЯрд╛рдиреЗ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдЕрднреА рднреА 0.17 рдореЗрдВ removeClippedSubviews
рд╕рд╛рде рдпрд╛ рдЙрд╕рдХреЗ рдмрд┐рдирд╛ рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЬреЛ рдиреЛрдЯрд┐рд╕ рдХрд┐рдпрд╛ рд╡рд╣ рдпрд╣ рдерд╛ рдХрд┐ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рд╕рд╛рдордЧреНрд░реА рдСрдлрд╕реЗрдЯ рдФрд░ initialListSize
рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрджрд┐ рдСрдлрд╝рд╕реЗрдЯ initialListSize
рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреА рдКрдВрдЪрд╛рдИ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡реЛрдВ рдХреЛ рддрдм рддрдХ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ред
flexDirection: 'row'
рд╕реЗрдЯ рд╡рд╛рд▓реА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рднреА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред рдЬрдм рдореИрдВ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ рддреЛ рд╕рднреА рдЖрдЗрдЯрдо рдкреНрд░рд╕реНрддреБрдд рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рд╕реЗрдЯ рд╣реИ рддреЛ рд╕реВрдЪреА рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдЖрдЗрдЯрдо рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИред
рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп removeClippedSubviews рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдПред
рдЖрдк https://github.com/machard/react-native-advanced-navigation рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ (рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреГрд╢реНрдп рдХреЗ рдмрд╛рдж рд░реЗрдВрдбрд░ рдореЗрдВ рджреЗрд░реА рд╣реЛ рд░рд╣реА рд╣реИ)
contentContainerStyle
рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ flexDirection: 'row'
рдФрд░ flexWrap: 'wrap'
рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдорд╛рдзрд╛рди pageSize
ред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг: 0.19.0
рдзрдиреНрдпрд╡рд╛рдж @jittuu рдиреЗ рдкреЗрдЬ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░реЛрдк рдХреЛ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛!
рдкреГрд╖реНрда рдЖрдХрд╛рд░ рдХрд┐рд╕ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛?
@gre рдпрд╣ рдЖрдкрдХреЗ рд▓реЗрдЖрдЙрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкреГрд╖реНрда рдЖрдХрд╛рд░ рдкреНрд░рддрд┐ рдкрдВрдХреНрддрд┐ рдЖрдЗрдЯрдореЛрдВ рдХрд╛ рдЧреБрдгрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рд╕рдЯреАрдХ рдорд╛рди рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЖрдкрдХреЛ рдкреВрд░реА рд╕реНрдХреНрд░реАрди рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА рдЖрдХрд╛рд░ рднреА рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдкрдХреЛ рдЗрд╕ рдХрдорд┐рдЯ рдореЗрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЙрдкрдпреЛрдЧреА рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ: https://github.com/facebook/react-native/commit/e7005f7f5429422b6f2e9c2aa29c9d57bda7b77a
@jittuu рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛; flexWrap
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рднреА рдмрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рдерд╛ред
рдзрдиреНрдпрд╡рд╛рдж @jittuu рдиреЗ рдкреГрд╖реНрда рдЖрдХрд╛рд░ рдХреЛ рдореВрд▓реНрдп 2 рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рднреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ !!
рд╕реВрдЪреАрджреГрд╢реНрдп рдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдРрдк рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдФрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдкрд░ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред
рдкреЗрдЬрд╕рд╛рдЗрдЬ рдиреЗ рдорджрдж рдирд╣реАрдВ рдХреА (рдореИрдВрдиреЗ 1 рд╕реЗ 60 рддрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ)ред
@ рдХреНрдпрд╛ рдЖрдк рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА рдЖрдХрд╛рд░ рдХреЛ рдХрд╛рдлреА рдмрдбрд╝рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдХреЛрдИ рд░реЗрдкреЛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ?
@jaygarcia @nicklockwood рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдмрдЧ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдореЛ рд╣реИ, рд░реЗрдкреЛ рдпреВрдЖрд░рдПрд▓: ListNotRender
рдХрджрдо:
рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рдмрдЧ ListView рдХреЗ removeClippedSubviews рдкреНрд░реЛрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдФрд░ рдмрдЧ рдХреЗрд╡рд▓ рддрднреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рд╕рд╣реА рд╣реЛред
рдпрд╣ рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП RN 0.26.0 рдкрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдВ рднреА рд╡рд╣реА рд╕реНрдерд┐рддрд┐:
removeClippedSubviews={true}
рд╕реАрд╕реА @javache
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ https://github.com/facebook/react-native/commit/1fcd73f3841d5afbabfa3adecfb7d4036d91a60e рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
@javache рдореИрдВрдиреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрд╕ рд▓рд╛рдЗрди рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдФрд░ рдЗрд╕рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕рдХреЗ рдКрдкрд░ https://github.com/facebook/react-native/commit/1048e5d3445094393298d4e818ff04c41f4e56a7 рднреА рд▓рдЧрд╛рдпрд╛ рд▓реЗрдХрд┐рди рдХреЛрдИ рд╕рдлрд▓рддрд╛ рдирд╣реАрдВ рдорд┐рд▓реАред ;)
рдЖрд░рдПрди 0.28 рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХрд▓ https://github.com/facebook/react-native/commit/1fcd73f3841d5afbabfa3adecfb7d4036d91a60e рдкреНрд░рддрд┐рдмрджреНрдз рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рднреА рдмрдЧ рдмрдирд╛рддрд╛ рд╣реИред
рдЗрд╕ рдкрд░ рдереЛрдбрд╝реА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╕реВрдЪреА рджреГрд╢реНрдп рдЕрднреА рднреА рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЕрдкрдбреЗрдЯ рд╣реЛ рд░рд╣рд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓ рдЕрдкрдбреЗрдЯ рдХреЗ рджреМрд░рд╛рди) рддрдм рднреА рдЬрдм рдпрд╣ рдЕрдм рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИ?
рдХреНрдпреЛрдВрдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдЧрд░ рдореИрдВ рджреГрд╢реНрдп рдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдмрдЧ рдореЗрд░реЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдЕрднреА рднреА 'рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг' рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ , рдереЛрдбрд╝рд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рд╡рд╛рдкрд╕ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЬрдм рддрдХ рдореИрдВ рдлрд┐рд░ рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рд░рд╣реЗрдЧреА ред
рд▓реЗрдХрд┐рди рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ рдЬрдм рдпрд╣ рдмрдЧ рдореЗрд░реЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ ~ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░реЗрдкреНрд░реЛ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ, рдпрд╛ рдмрдЧ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд╣реИ?
рд╡рд╣ рдкрд░рд┐рджреГрд╢реНрдп @janmonschke https://github.com/facebook/react-native/issues/1831#issuecomment -22799032 рд╕реЗ рдмрд╣реБрдд рджреВрд░ рдирд╣реАрдВ рд╣реИред
рдЗрд╕ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрдард┐рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдореЗрд░рд╛ 2-рд╕реЗрдВрдЯ рд╣реИ:
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рджреМрд░рд╛рди _white_ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдХреЛ рдлрд┐рд░ рд╕реЗ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рддреЗ рд╕рдордп _(рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ)_, рд╡реЗ рдЕрднреА рднреА рд╕рдлреЗрдж рд╣реИрдВ, рдФрд░ рд╡реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ _(рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)_ рдЬрдм рддрдХ рдПрдХ рдирдпрд╛ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЕрдЧрд░ рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ ( updateClippedSubviews
?) (рдпрджрд┐ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рдХрднреА рд╕рдлреЗрдж рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛)
@ javache 1fcd73f рдПрдХ рдпрд╛ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде ListView рдорд╛рдорд▓реЗ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реНрдг рд╕реНрдХреНрд░реА рдирд╣реАрдВ рднрд░рддрд╛ рд╣реИред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреА рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ ListView рд╕реВрдЪреА рдкрдВрдХреНрддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдмрдЧ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ:
рд╕реВрдЪреА рджреГрд╢реНрдп рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛, рдПрдХ рд╕реНрдХреНрд░реАрди рд╕реЗ рдЕрдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ рд╕реВрдЪреА рджреГрд╢реНрдп рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдПрдХ рд╕реНрдХреНрд░реАрди рд╕реЗ рдХрдо рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ рд╕реВрдЪреА рджреГрд╢реНрдп рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИред 1fcd73f рд╕реНрдХреНрд░реЙрд▓ рдХреЗ рд╕рд╛рде ListView рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ :)
рд╣рдордиреЗ рдЬреЛ рд╕рдорд╛рдзрд╛рди рдЪреБрдирд╛ рд╡рд╣ рдерд╛ рд╕реНрдХреНрд░реЙрд▓ рдЯреВ 1 рдкреАрдПрдХреНрд╕ рд╢рд┐рдлреНрдЯ рдХреЛ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рд░реАрдлреНрд░реЗрд╢ рдкрд░ рдХрд░рдирд╛ред рдпрд╣ рдПрдХ рдХрд╛рдордХрд╛рдЬ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред
requestAnimationFrame(() => {
this.listview.scrollTo({y: 1});
});
@JBerendes рд╣рд╛рдБ рдпрд╣ рд╣реИрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдПрдХ рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕реНрдХреНрд░реЙрд▓ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ рд╣реИ:
class ...YourListAbstraction {
_scrollY = 0;
_lastTimeScrolled = 0;
scrollHackToWorkaroundWhiteBug (amount) { // call at appropriated time, with -1 or 1. if possible alternate so you don't change the actual scroll over calls xD
const { list } = this.refs;
if (!list) return;
if (Date.now() - this._lastTimeScrolled < 500) return; // don't mess with user scroll
list.getScrollResponder().scrollTo({
y: this._scrollY + amount,
});
}
onScroll = ({ nativeEvent }) => { // give onScroll={this.onScroll} to ListView
this._scrollY = nativeEvent.contentOffset.y;
this._lastTimeScrolled = Date.now();
};
}
рдЕрдкрдиреЗ ListView рдЕрдмрд╛рд╕реНрдЯреНрд░рдХреНрд╢рди рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рдлрд┐рд░ рдЖрдкрдХреЛ рдЙрдЪрд┐рдд рд╕рдордп рдкрд░ scrollHackToWorkaroundWhiteBug
рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рд╕реНрдХреНрд░реАрди рдмрджрд▓рддрд╛ рд╣реВрдВ (рд╕рдВрдХреНрд░рдордг рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ)ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ ListView рдХреЗ scrollRenderAheadDistance
(рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдкрд░реНрд╢ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЕрди-рд░реЗрдВрдбрд░ рдХреА рдЧрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдореИрдВрдиреЗ scrollRenderAheadDistance
рдХреЛ 1800 рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдмреА рд╣рд╛рд╕рд┐рд▓ рдХреА рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ scrollRenderAheadDistance
рдФрд░ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдВрдмрдВрдз рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╕рдВрдЧрдд рд╣реИред рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрднреА-рдХрднреА рдпрд╣ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛):
| рд╕реНрдХреНрд░реЙрд▓рд░реЗрдВрдбрд░рдЕрд╣реЗрдбрдбрд┐рд╕реНрдЯреЗрдВрд╕ | рдкреНрд░рд╕реНрддреБрдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ |
| --- | --- |
| 1000 | 2 |
| резреирежреж | 2-5 |
| 1400 | 5 |
| 1600 | 6 |
| 1800 | 7+ |
рдореИрдВ 80pt рдКрдВрдЪрд╛рдИ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реВрдЪреА рджреГрд╢реНрдп рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдПрдХ рд╕реВрддреНрд░ рдирд┐рдХрд╛рд▓рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ ListView рдХреЗ рд▓рд┐рдП рд╕рд╣реА scrollRenderAheadDistance
рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛:
scrollRenderAheadDistance = 680 + (ROW_HEIGHT_IN_PIXELS * INITIAL_PAGE_SIZE_IN_PIXELS)
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ 680
(рдпрд╛ 340 * 2
) рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рд╕рдорд╛рдзрд╛рди рдбреАрдмрдЧ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд░рд┐рд▓реАрдЬ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ (рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП) ...
рдареАрдХ рд╣реИ, removeClippedSubviews
рдХреЛ рдЕрд╕рддреНрдп рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред
0.26 рд╕реЗ 0.29 рддрдХ рдЕрдкрдЧреНрд░реЗрдб рд╣реЛрдиреЗ рддрдХ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЗрд╕рд▓рд┐рдП 0.27, 0.28, рдпрд╛ 0.29 рдореЗрдВ рдХреБрдЫ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдореИрдВрдиреЗ рдЕрднреА рддрдХ 0.27 рдпрд╛ 0.28 рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА рддреЛ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)ред
@gnestor рдпрд╣ 0.29 рдореЗрдВ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ, # 8607 рдФрд░ https://github.com/facebook/react-native/commit/1048e5d3445094393298d4e818ff04c41f4e56a7 рдЬрд╛рдВрдЪреЗрдВ
@gnestor @nihgwu рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдмрдЧ рд╣рд╛рд▓рд┐рдпрд╛ рд░рд┐рдЧреНрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИред рдпрд╣ рдореБрджреНрджрд╛ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ RN 0.13 рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ ListView рдХреЗ рд╕рд╛рде "рдЬреАрд╡рд┐рдд" рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред removeClippedSubviews
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рд╕реЗ рдмрдбрд╝реА рд╕реВрдЪреА рд╕реБрд╕реНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдмрдЧ рджрд┐рдЦрд╛рдИ рджреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдореЛрдЯреЗ рддреМрд░ рдкрд░ рд╡реИрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдЗрд╕ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдВрдХ рд╕рдВрджреЗрд╢ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
@gre рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ # 8607 рдХреЛ 0.29 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд╛рд▓реА рджреГрд╢реНрдп рдореЗрдВ рдЬрд╛рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реИ, рдореИрдВ рд╕рд┐рд░реНрдл https://github.com/facebook/react-native/commit/1048e5d3445094393298d4e818ff04c41f4e56a7 рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ removeClippedSubviews
рдХреЛ рдмрдВрдж рдХрд┐рдП рдмрд┐рдирд╛ рдкрд╣рд▓реЗ
initialListSize
рдХреЛ рдЙрдЪрд┐рдд рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП removeClippedSubviews
рдХреЛ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ
0.28 рд╕реЗ 0.29 рддрдХ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реБрдИред
removeClippedSubviews={false}
рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ред
рд╕рд╛рде рд╣реА, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ ListView
рдКрдВрдЪрд╛рдИ рдХреЛ componentDidUpdate()
рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдКрдВрдЪрд╛рдИ-рдЕрджреНрдпрддрди рдХреЛрдб рдХреЛ componentDidUpdate()
рдореЗрдВ setTimeout
рд╕рд╛рде рдХрд╕реНрдЯрдо рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрдиреЗ рд╕реЗ рднреА рдорджрдж рдорд┐рд▓рддреА рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЕрдиреБрднрд╡ рднреА рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдкрд░ рдерд╛ рдЬреЛ рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рдерд╛ред рдореИрдВ рднреА рдЗрд╕реЗ рдХреЗрд╡рд▓ iOS рдкрд░ рджреЗрдЦ рд░рд╣рд╛ рдерд╛ рдФрд░ 0.29 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рджред рдЬрдм рдореИрдВ рдЗрд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рд╕реВрдЪреА рджреГрд╢реНрдп this.state.dataSource.cloneWithRowsAndSections
рдФрд░ componentDidMount
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдФрд░ рдЗрд╕рд▓рд┐рдП removeClippedSubviews={false}
рдиреЗ рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ред
рдореЗрд░реЗ ListView
рдШрдЯрдХ рдкрд░ removeClippedSubviews
рд╕реЗрдЯ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ Navigator
рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореИрдВ рдХреЗрд╡рд▓ Release
рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде 0.29
рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ flexDirection: 'row' рдФрд░ flexWrap: 'wrap' рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВ RN 0.29.2 рдкрд░ рд╣реВрдВред рдЕрдиреНрдп рд╕реВрдЪреАрджреГрд╢реНрдпреЛрдВ рдкрд░ (рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ flexDirection: 'row' рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ) рдореБрдЭреЗ рд╡рд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдЕрдиреНрдп рдкреЛрд╕реНрдЯрд░реЛрдВ рдХреА рддрд░рд╣ рддреНрд╡рд░рд┐рдд рд╕реБрдзрд╛рд░ рдиреЗ рдХрд╣рд╛ рд╣реИ рдХрд┐ рдЙрдЪрд┐рдд рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА рдЖрдХрд╛рд░ рдФрд░ рдкреГрд╖реНрда рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╡реЗ рдРрдк рдХреЛ рдХрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдмрдирд╛ рджреЗрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИрдВ рдЬреЛ рд╕реВрдЪреАрджреГрд╢реНрдп рдХреЗ рдЕрдВрджрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореМрдЬреВрдж рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рджрд┐рдЦрд╛рдПрдВрдЧреЗ , рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдмреАрдЪ рдЯреИрдк рдХрд░рдирд╛ рдзреАрдорд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдЪреАрджреГрд╢реНрдп рдкреВрд░реЗ рджреГрд╢реНрдпрдорд╛рди рдХреНрд╖реЗрддреНрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЕрдиреНрдп рд╕реВрдЪреАрджреГрд╢реНрдпреЛрдВ рдкрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА рдЖрдХрд╛рд░ = 0 рдкреГрд╖реНрда рдЖрдХрд╛рд░ = 1 рд╕реЗрдЯ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЧреНрд░рд┐рдб рд╕реВрдЪреАрджреГрд╢реНрдп (рдлреНрд▓реЗрдХреНрд╕рдбрд╛рдпрд░реЗрдХреНрд╢рди: 'рдкрдВрдХреНрддрд┐' рдФрд░ рдлреНрд▓реЗрдХреНрд╕рд╡реНрд░рдк: 'рд░реИрдк') рдкрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдореИрдВ рдЗрд╕реЗ рдЖрд░рдПрди v0.31.0-рдЖрд░рд╕реА.0 рдкрд░ рдорд╛рд░ рд░рд╣рд╛ рд╣реВрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ removeClippedSubviews={false} рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЧрдИ рд╣реИред
"removeClippedSubviews={false}" рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛ рдФрд░ рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ "listView. scrollTo" рдФрд░ "removeClippedSubviews" рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ?
RN 0.31 рдХреЗ рд╕рд╛рде ios 10 рдмреАрдЯрд╛ рдкрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЦрд░рд╛рдм рд╣реИ :-(
removeClippedSubviews
рдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдореЗрд░реА рдорджрдж рдирд╣реАрдВ рдХреА, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп ListView
рд╕реЗ ScrollView
рдкрд░ рдЬрд╛рдирд╛ рдкрдбрд╝рд╛ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмрдЧред рдореИрдВ рднреА рдЙрд╕рд╕реЗ рдорд┐рд▓рд╛ред
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рдкреНрд░реЛрдбрдХреНрдЯ рдкреЗрди рдкрд░ рдЕрдкрд╡реЛрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рдКрдВрдЪрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдХрд┐рд╕реА рдХреЗ рдЗрдирдмреЙрдХреНрд╕ рдореЗрдВ рдЙрддрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ :-( рдпрд╣рд╛рдВ рд▓рд┐рдВрдХ рд╣реИ
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж #8607 рдЬреИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рд╣реИред рдореЗрд░реА рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрд╛ рдЬрд╛рдПред
0.33.0
рдЕрднреА рднреА 0.32 . рдореЗрдВ рдореМрдЬреВрдж рд╣реИ
рдореИрдВ рдХрд▓ рдЗрд╕ рдмрдЧ рд╕реЗ рдорд┐рд▓рд╛, рдФрд░ removeClippedSubviews = {false}
рд╕реНрдерд╛рдкрдирд╛ рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред
0.33 . рдкрд░ +1
рд╣рд╛рдБ, рдореБрдЭреЗ, рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛! +1
0.33,
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
removeClippedSubviews = {false}, рдореЗрд░реЗ рд▓рд┐рдП рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред
+1
рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкреИрдЪ рдХреЛ https://gist.github.com/majak/b0ee1fb6ca725d2cf810d2f0ab394f2e (#8607 рд╕реЗ) рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ?
@majak рдЗрд╕ рдкреИрдЪ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдо рдЗрд╕реЗ рдЕрднреА рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдм рдпрд╣ рдореБрджреНрджрд╛ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ (RN 0.34)ред
@majak рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдареАрдХ рд╣реИ, рдЕрдЪреНрдЫрд╛ рдХрд╛рдо!
рдпрд╣ RN34 рдкрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЬрдм removeClippedSubviews={true}
рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 0.34 рдкрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдереАред
рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реБрдИ рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рдерд╛:
flexDirection: 'row',
flexWrap: 'wrap',
justifyContent: 'center',
рд╕реВрдЪреАрджреГрд╢реНрдп рд╕реНрдЯрд╛рдЗрд▓ рдкрд░ред
initialListSize={100}
рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рддрдп рдХрд┐рдпрд╛
@majak рдХреНрдпрд╛ рдЖрдк рдЙрд╕ рдкреИрдЪ рдХреЗ рд╕рд╛рде рдкреАрдЖрд░ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ?
@janmonschke рд╣рд╛рдБ! рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред
рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 0.36 . рдкрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдереА
рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ 0.36 . рдкрд░ рд╣реЛрддрд╛ рд╣реИ
рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ, рдХреЗрд╡рд▓ рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХрднреА рдирд╣реАрдВред рд╕реВрдЪреА рдХрднреА рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдКрдкрд░ рд╕реЗ рд╕реБрдЭрд╛рдИ рдЧрдИ рд╣рд░ рдЪреАрдЬ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ ListView
рдХреЛ ScrollView
, рдЬреЛ рдореИрдВ рдЕрдкрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рджреЗрдЦрддрд╛ рд╣реВрдВ рд╡рд╣ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рд╣реИред (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдХреЗ рдмрд╛рд╣рд░ рд╕реВрдЪреА рдбрд╛рд▓рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛)
0.37
рдореИрдВ рдЕрднреА рднреА 0.36 рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдвреВрдВрдв рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдХрд╛рдордХрд╛рдЬ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдореИрдВ рдЗрд╕реЗ рдЕрднреА рднреА 0.36.1 . рдкрд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ
рдореИрдВ рдЗрд╕реЗ рдЕрднреА рднреА 0.36.1 . рдкрд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ
0.31 . рдореЗрдВ рдореМрдЬреВрдж рд╣реИ
initialListSize={1}
рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╣рд▓ рдХрд░реЗрдВ
рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 0.38 . рдкрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдереА
renderScrollComponent={(props) => <ScrollView style={flex: 1} /> }
рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг 0.38 рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг 0.38 рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╢реБрд░реБрдЖрддреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рдпрд╣ рд╕рдорд╕реНрдпрд╛ 0.36 рдкрд░ рдореМрдЬреВрдж рд╣реИред
рдЗрд╕реЗ removeClippedSubviews = {false} рдФрд░ InitialListSize={8} рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрд╛
1 рд╕рд╛рд▓ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХрд╛ рд╕рдордп рдмреАрдд рдЧрдпрд╛, рдпрд╣ рдореБрджреНрджрд╛ рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИ ??
рдЕрднреА рднреА 0.39 рдкрд░ рдореМрдЬреВрдж рд╣реИред рд╕реЗрдЯ removeClippedSubviews = {false}
рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
"removeClippedSubviews={false}" рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдирдпрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкреИрд▓реЗрдЯрдлреЙрд░реНрдо рдЖрдИрдУрдПрд╕ред RCTView.m рдлрд╝рд╛рдЗрд▓
рдХреНрдпрд╛ рдореБрдЭреЗ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ RN0.40 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ RN0.40 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореМрдЬреВрдж рд╣реИред
1, removeClippedSubViews = true рдХреЗ рд╕рд╛рде рдПрдХ рд╕реВрдЪреА рджреГрд╢реНрдп рджрд┐рдЦрд╛рдПрдВ;
2, рдПрдХ рдкрдВрдХреНрддрд┐ рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдВ рдЕрдЧрд▓рд╛ рдкреГрд╖реНрда рджрд░реНрдЬ рдХрд░реЗрдВ;
3, рд╕реНрдХреНрд░реАрди рдУрд░рд┐рдПрдВрдЯреЗрд╢рди 90 рдШреБрдорд╛рдПрдБ;
4, рд╕реВрдЪреА рджреГрд╢реНрдп рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд╛рдкрд╕;
ListView рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛, рдПрдХ рд╕реНрдХреНрд░реАрди рд╕реЗ рдЕрдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ ListView рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛
@endpress рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ, рдлрд┐рд░ рднреА RN0.41RC0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ 0.38 рдореЗрдВ рд░рдЦреЗрдВред
рдореЗрд░рд╛ рдХрд╛рдордХрд╛рдЬ 0 рдФрд░ 1 рдХреЗ рдмреАрдЪ ListView рдХреЗ рдкреИрдбрд┐рдВрдЧрдЯреЙрдк рдХреЛ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП ListView рд╣рд░ рдмрд╛рд░ рд░реАрдлреНрд░реЗрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдк рдкреГрд╖реНрдарднреВрдорд┐ рд░рдВрдЧ, рд╕реАрдорд╛, рдЖрджрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреНрдп рдЧреБрдг рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
@nihgwu рдЕрднреА рднреА
рдпрд╣ рд╣реИ рдореБрджреНрджрд╛
@endpress the change (https://github.com/facebook/react-native/issues/1831#issuecomment-270552011) рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ facebook/react-native#8607 рдХреЛ рднреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдкреИрдЪ рдЕрднреА рднреА рд╕рд╣реА рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдЖрдкрдХреЛ рдкреАрдЖрд░ рдмрдирд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред
рдореЗрд░реЗ рд▓рд┐рдП рднреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА рдЖрдХрд╛рд░ = {0} рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ rn 0.40.0
@majak рдХреНрдпрд╛ рдЗрд╕ рдШрд╛рддрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИ?
https://github.com/facebook/react-native/commit/a3457486e39dc752799b1103ebe606224a8e8d32 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдЕрднреА рднреА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкрд░ рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрдо рдмрдЧ рд╣реИрдВ рдпрд╛ рдкрд┐рдЫрдбрд╝реЗ рдЕрд╕рдВрдЧрдд рддрд░реАрдХреЗ рд╕реЗ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдЬреЛрдЦрд┐рдо рдкрд░ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВред
@sahrens @gre рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЕрдореВрд░реНрдд рдкрд░рдд рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдкреБрд░рд╛рдиреА рд╕реВрдЪреА рджреГрд╢реНрдп рдХреЗ рд╕рдорд╛рди рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдорд╛рд░рд╛ рдкреБрд░рд╛рдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рд╡рд╣реА рд░рдЦ рд╕рдХреЗред
@sahrens FlatList UITableView рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?
рдПрдХ рдмрд╛рд░ рдЬрдм рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рд╕реНрдерд┐рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдм рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдХреЗ рд╕рдорд╛рди рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдбреЗрдкреНрдЯрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╣реБрдб рдХреЗ рддрд╣рдд рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕реНрд╡реИрдк рдХрд░ рджреЗрдВред
рдпрд╣ UITableView рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рдирдП рдореВрд▓ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реЗ рдореМрдЬреВрджрд╛ рдореВрд▓/рдврд╛рдВрдЪреЗ рдХреЗ рдЖрджрд┐рдо рдХреЗ рд╕рд╛рде рд╕рд┐рд░реНрдл рдЬреЗрдПрд╕ рд╣реИ - рдЖрдк рдпрд╣рд╛рдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/facebook/react-native/commit/a3457486e39dc752799b1103ebe606224a8e8d32
@sahrens рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдФрд░ рдЙрдкрдпреЛрдЧреА рд╣реИред
@savanthongvanh рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрдХрд╛рд░ рдХреЛ 0 рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЛрдб рдкрд░ ListView рдореЗрдВ рд╕рднреА рдЖрдЗрдЯрдо рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рддреЛ рдЗрд╕рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВред
рдЗрд╕ рдЖрд░рдПрди 0.41.2 рд╕реЗ рднреА рдирд┐рдкрдЯрдирд╛ред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдлреНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХрд╛ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдХреЙрдкреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд▓реНрдж рд╣реА рд╕рдорд╛рдзрд╛рди рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдзрдиреНрдпрд╡рд╛рдж,
рд░реЙрди
рдпрджрд┐ рдЖрдк рдЙрдирдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ FlatList (рдФрд░ VirtualizedList) рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╣реИрдВред
рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдлреНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЕрднреА рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://hackernoon.com/react-native-new-flatlist-component-30db558c7a5b#.xnp03gd2u
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА рдЖрдХрд╛рд░ рдХреЛ рдЙрдЪрд┐рдд рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛рдП рдЧрдП рдХреНрд▓рд┐рдкреНрдбрд╕рдмрд╡реНрдпреВ рдХреЛ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ
рдзрдиреНрдпрд╡рд╛рдж @hoperce , removeClippedSubviews
рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, initialListSize
рдЪреЙрдкреА рд╕реНрдХреНрд░реЙрд▓ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ
рдореЗрд░реЗ рдкрд╛рд╕ RN .42 рд╣реИ рдФрд░ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдлреНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдХрд╛рдо рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рддрдм рддрдХ рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реВрдВ рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ)ред
рдЖрдк рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЛрдб рдХреЛ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЖрдк RN рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реЛрдВред
рдореИрдВ рдЕрднреА рднреА рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рд╕рд╛рде "рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдкрд░ рдкреВрд░реНрдг рджреГрд╢реНрдп рд╕рдлреЗрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ" рдмрдЧ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рдлреЗрдж рд╣реЛрдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рдлреНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдЕрд▓рдЧ рдФрд░ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИред рд╣рдо рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╡рд┐рдВрдбреЛрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╛ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдмрдЧ рд╡рд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░реЙрд▓ рд╣реЛрдиреЗ рддрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░ рдкрд░ рдХреЛрдИ рд╕рд╛рдордЧреНрд░реА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣реА рд╣реИ, рдЬреЛ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ FlatList рдХреЗ рд╕рд╛рде рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореБрдЭреЗ ListView (рдФрд░ FlatList рд╕рд╛рде рд╣реА) рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИред
рдореБрдЭреЗ рдЕрднреА рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рджреГрд╢реНрдп рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ [] рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░рдХреЗ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ () рдореЗрдВ рдЖрдЗрдЯрдо рдХреА рд╕реВрдЪреА рдореЗрдВ рд░реАрд╕реЗрдЯ рдХрд░рдХреЗ рд╕реВрдЪреА рдХреЛ рдареАрдХ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдПрдлрд╡рд╛рдИрдЖрдИ рдореЗрд░реА рд╕реВрдЪреАрджреГрд╢реНрдп рдПрдХ TabNavigator рдореЗрдВ рдПрдХ ReactNavigation StackNavigator рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реИред
рд╕рд╛рде рд╣реА, 1px рд╕реНрдХреНрд░реЙрд▓ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЕрднреА рднреА ListView / FlatList рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕рд╣реА рдЬреАрд╡рдирдЪрдХреНрд░ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЖрдорддреМрд░ рдкрд░ рдЬрдм рдЖрдк рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ)ред
@gre : рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ FlatList рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реЗрдкреНрд░реЛ рдРрдк рд╣реИ? рдореИрдВ рдЙрд╕ рдлрд┐рдХреНрд╕ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ!
@gre , рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рд╣реИ? рдФрд░ рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рдЙрд╕ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдШрдЯрдХрд╡рд┐рд▓рдорд╛рдЙрдВрдЯ рдореЗрдВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реВрдЪреА рджреГрд╢реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИ?
@ericvicenti - рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд░рдПрди рд╕реЗ рдХреЛрдб рдХреЗ рдХреБрдЫ рдЕрдиреНрдп рдЯреБрдХрдбрд╝реЗ рд▓реЗрддрд╛ рд╣реИред рдореИрдВ рдЪрд┐рдВрддрд┐рдд рдерд╛ рдХрд┐ рдпрд╣ рдХрд╣реАрдВ рдФрд░ рд╕реЗ рдмрд┐рдЯреНрд╕ рдФрд░ рдЯреБрдХрдбрд╝реЗ рдЙрдзрд╛рд░ рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ред рдореИрдВ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВред рд╢рд╛рдпрдж рдЗрд╕реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд░реЗрдкреЛ рдореЗрдВ рдлреЗрдВрдХ рджреЗрдВ - рдХреНрдпрд╛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ?
@sahrens рдЦреЗрдж рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реА рдХрдВрдкрдиреА рдРрдк рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдореИрдВ рдЗрд╕реЗ
@natdm рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдереЛрдбрд╝рд╛ рдКрдкрд░: https://github.com/facebook/react-native/issues/1831#issuecomment -231069668 - рдпрд╣ рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕рд╕реЗ рдХрдореЛрдмреЗрд╢ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд▓рди рдХрд┐рдпрд╛ рд╣реИ рдПрдХ -1 рдкреАрдПрдХреНрд╕ рдФрд░ 1 рдкреАрдПрдХреНрд╕ рдХреЗ рдмреАрдЪ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд╛рдХрд┐ рдпрд╣ рд╕рдордп рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреНрд░реЙрд▓ рдЬрдорд╛ рди рдХрд░реЗ XD рд╡рд┐рд╢рд╛рд▓ рд╣реИрдХ
рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╕реЗрдХреНрд╢рдирд▓рд┐рд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЖ рд░рд╣реА рд╣реИ - рдЬрдм рддрдХ рдореИрдВ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рддрдм рддрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░ рдкрд░ рдЦрд╛рд▓реАред @sahrens рдХреНрдпрд╛ рджреГрд╖реНрдЯрд┐ рдореЗрдВ рдХреЛрдИ рд╕реБрдзрд╛рд░ рд╣реИ?
@smkhalsa рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдкрд╖реНрдЯ
@sahrens рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ removeClippedSubviews={false} рд╕реЗрдЯ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рджреГрд╢реНрдп рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдХреНрд░реАрди рдорд┐рд▓рддреА рд╣реИред
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рдирдП рд░реЗрдкреЛ рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЕрдЧрд░ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рддреЛ рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛ред
рдореЗрд░реЗ рд▓рд┐рдП рд╡рд╣реА (рд╣рдЯрд╛рдПрдВ рдХреНрд▓рд┐рдкреНрдбрд╕рдмрд╡реНрдпреВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреНрд░рд┐рдЧрд░ рд╣реИ)ред рд╣рдорд╛рд░реЗ рдРрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЖрд╕рд╛рди рд░реЗрдкреНрд░реЛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЯреИрдм-рд╡реНрдпреВ рдХреЗ рдЕрдВрджрд░ рд╕реВрдЪрд┐рдпрд╛рдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдПрдХ рдЖрд╕рд╛рди рдЙрджрд╛рд╣рд░рдг рдЗрд╕реЗ рджреЛрдмрд╛рд░рд╛ рдХрд░реЗрдЧрд╛ рдпрд╛ рдирд╣реАрдВред
рдореЗрд░реЗ рдЙрддреНрддрд░ рдХреЗ 2 рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ https://github.com/facebook/react-native/issues/1831#issuecomment -228775913
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╕рд┐рд░реНрдл рдПрдХ рдкрд░рд┐рдХрд▓реНрдкрдирд╛):
(рез) рд╕реВрдЪреА рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдЯреИрдм рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ 'рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░' рд╣реИрдВ, removeClippedSubviews рдорд╛рди рд▓реЗрдВрдЧреЗ рдХрд┐ рд╡реЗ рдпрд╣рд╛рдВ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдХреБрдЫ рднреА рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ (рд╕рдлреЗрдж)
(реи) рдЬрдм рдЯреИрдм рдлреЛрдХрд╕ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдЯреИрдм рд╢рд╛рдпрдж <StaticContainer>
рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреБрдЫ рднреА 'рддрд╛рдЬрд╝рд╛' рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдЕрднреА рднреА рд╕рдлреЗрдж рд╣реИ
(рей) рдЬреИрд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 'рд╕реНрдХреНрд░реЙрд▓' рдХрд░реЗрдЧрд╛, рдЖрдк removeClippedSubviews рд▓реЙрдЬрд┐рдХ рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдм рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реВрдЪреА рд╕реЗрд▓ рджреГрд╢реНрдпрдорд╛рди рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░реАрдлреНрд░реЗрд╢ рдХрд░реЗрдВред
рд▓реАрдб рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @рдЧреНрд░реЗ
рдЕрднреА рднреА RN 0.41.2 рдкрд░ рдореМрдЬреВрдж рд╣реИ, Android рдареАрдХ рд╣реИ, рдмрд╕ ios10, рд╕реЗрдЯ removeClippedSubviews={false} рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реА рд╕реВрдЪреА рджреГрд╢реНрдп рдЫреЛрдЯрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред TabNavigator (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди) рдХреЗ рдПрдХ рд╕реНрдЯреИрдХ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдХреЗ рдЕрдВрджрд░ рд╕реВрдЪреА рджреЗрдЦреЗрдВред
render() {
return (
<View style={{ flex: 1, justifyContent:'center'}}>
<ListView
dataSource={this.state.dataSource}
renderRow={this._renderRow.bind(this)}
removeClippedSubviews={false}
/>
</View>
);
}
рдпрд╣рд╛рдБ рд╡рд╣реА рдореБрджреНрджрд╛ред рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреБрдЫ рдирд╣реАрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ removeClippedSubviews={false} рдиреЗ рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рднреА рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ред
@agentilela рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ
removeClippedSubviews={false}
рд╕реНрдерд╛рдкрдирд╛ рдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛
рдЗрд╕ рдореБрджреНрджреЗ рдореМрдЬреВрдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА-рдирдХреНрд╢реЗ рдореЗрдВ MapView
рдЬреЛ AFAIK рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ ScrollView
рдФрд░ рд╕рд╛рде рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИ ListView
ред
рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА RN44 рдореЗрдВ рд╣реЛ рд░рд╣реА рд╣реИ, initialListSize={200}
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рд╕реВрдЪреА рджреГрд╢реНрдп рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ 100 рд╕реЗ рдЕрдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВред
ps removeClippedSubViews={false}
рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
removeClippedSubViews={false}
рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП ListView
рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред
рд╕рд╛рде рд╣реА, FlatList
рдореЗрдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдореБрдЭреЗ ListView/FlatList рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдореИрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рддрдп рдХрд░ рджреА рд╣реИ lazy: true
TabNavigator рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдФрд░ removeClippedSubViews={false}
ListView рдореЗрдВ
рдореИрдВ рдпрд╣ рднреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдмрдЧ рдЖрд░рдПрди 0.44.0 рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ:
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди + TabNavigator + (ListView рдпрд╛ FlatList) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣реЛрддрд╛ рд╣реИред
рдЬрдм рдЖрдк рдХрд┐рд╕реА рдЯреИрдм рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рд╡рд╣ рдЦрд╛рд▓реА рджрд┐рдЦрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЬрдм рдЖрдк рдереЛрдбрд╝рд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реВрдЪреА рджрд┐рдЦрд╛рдИ рдЬрд╛рддреА рд╣реИред
рдПрдХрдорд╛рддреНрд░ рдЯреИрдм рдЬрд╣рд╛рдВ рдпрд╣ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ TabNavigator рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реВрдЯрдирд╛рдо рдореЗрдВ рд╣реИ
рдЬреИрд╕рд╛ рдХрд┐ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрд▓рд╕реА рд╕реЗрдЯ рдХрд░рдирд╛: рд╕рдЪ рд╣реИред TabNavigator рдЗрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛, removeClippedSubViews рдХреЗ рд╕рд╛рде рддрдп рдХреА рдЧрдИ рд╣реИ
рдЬреИрд╕рд╛ рдХрд┐ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЕрдВрдХ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ https://github.com/facebook/react-native/issues/14069
рдореИрдВрдиреЗ https://github.com/jcharlet/react_native_listview_bug рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реЗрдкреЛ рдмрдирд╛рдпрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рдорджрдж рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд╛рде рд╣реА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЙрд╕реА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП 'рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди' рдХреЗ рдмрдЬрд╛рдп 'рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд░рд╛рдЙрдЯрд░-рдкреНрд░рд╡рд╛рд╣' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ
TabNavigator рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ред removeClippedSubViews={false} рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ред рдкреНрд░рд╢реНрди рдореЗрдВ рдЯреИрдм рдореЗрдВ рдПрдХ рдмрдЪреНрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ TabNavigator рдФрд░ рдПрдХ StackNavigator рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдФрд░ рд╕рд╛рджрд╛ ListViewред RN реж.рекрек / рдПрдХреНрд╕рдкреЛ резрен, рдФрд░ рди рддреЛ рд╣рдЯрд╛рдПрдБClippedSubviews рдФрд░ рди рд╣реА рдЖрд▓рд╕реА рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдорджрдж рдХреА:-/
removeClippedSubviews рдиреЗ рдореБрдЭреЗ рдЖрдИрдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА, рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓рд┐рд╕реНрдЯрд╕рд╛рдЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛
рд╕рд╛рде рдореЗрдВ
"dependencies": {
"react": "16.0.0-alpha.6",
"react-native": "0.44.2",
"react-navigation": "1.0.0-beta.11"
}
рдФрд░ lazy: true
рдореЗрдВ TabNavigator
рдХреЗ TabNavigatorConfig
рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ:
const AppNavigator = TabNavigator({
HomeTab: {
screen: HomeScreen,
path: '/'
},
PeopleTab: {
screen: PeopleNavigator,
path: '/people',
}
}, {
lazy: true
});
const PeopleList = ({ people }) => {
return (
<FlatList
data={people}
renderItem={({item}) => <Text>{item.name}</Text>}
/>
);
};
рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛
{
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓": "0.44.2",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди": "1.0.0-рдмреАрдЯрд╛.11"
}
рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдЖрд▓рд╕реА = рд╕рдЪ StackNavigator рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ
{
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓": "0.44.2",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди": "1.0.0-рдмреАрдЯрд╛.11"
}
рдЖрд▓рд╕реА = рд╕рдЪ
рдирд┐рдХрд╛рд▓реЗрдВрдХреНрд▓рд┐рдкреНрдбрд╕рдмрд╡реНрдпреВ = {рдЭреВрдард╛}
рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдореИрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ 2 рд╕рд╛рд▓ рдХреА рдмрдЧ рдЖрдЦрд┐рд░рдХрд╛рд░ рдХрдм рдмрдВрдж рд╣реЛрдЧреАред
рдореИрдВрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ 0.44.2, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди 1.0.0-рдмреАрдЯрд╛.11 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛, рдФрд░ рдкреНрд░рд╢реНрди рдореЗрдВ TabNavigator рдкрд░ "рдЖрд▓рд╕реА = рд╕рддреНрдп" рд╕реЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ред рд╢рд╛рдпрдж рдмрд╕ рдЖрд▓рд╕реА рд╕реЗрдЯ рдХрд░рдирд╛ = рд╕рдЪ рдХрд░рдирд╛ рдЪрд╛рд▓ рдЪрд▓ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред
@jhalborg рдореИрдВрдиреЗ FlatList рдФрд░ removeClippedSubViews = {false} рдХреЗ рд╕рд╛рде рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рддрдп рдХреА рд╣реИред
рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рд▓рд┐рдП removeClippedSubViews рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
рдореЛрдбрд▓ рд╕реНрдЯреИрдХ -> рд╡рд░реНрддрдорд╛рди рдЯреИрдм рд╕реНрдЯреИрдХ -> рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдХрдИ рдЯреИрдм рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдХреА рдХрдореА рдереА рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд░рд╛рдЬреНрдп рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ removeClippedSubViews рдорд╛рди рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реНрдХреНрд░реАрди рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрдВ рдЗрд╕реЗ рдЪрд╛рд▓реВ/рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╕реВрдЪрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреИрдм рдкрд░ рдкреБрдирдГ рд▓реЛрдб рд╣реЛрддреА рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдирд┐рдореНрди рдХреА рддрд░рд╣ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
constructor (props) {
super(props)
this.state = { removeClippedSubViews: false }
}
componentDidMount () {
this.setState({ removeClippedSubViews: true })
}
resetData () {
const callback = (newRecords) => {
this.setState({ removeClippedSubViews: true, records: newRecords })
}
this.setState({ removeClippedSubViews: false, records: [] }, () => {
someDataHelper.reloadData(callback)
})
}
render () {
return (
<ListView removeClippedSubViews={this.state. removeClippedSubViews} />
)
}
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрдЭреЗ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдХрд░ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди рдПрдХ рдмрд╣реБрдд рд╣реА рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рдмрди рдЧрдпрд╛ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдм рдирд┐рдореНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рд╡рд┐рдЪрд╛рд░?
рдХреНрдпрд╛ рдпрд╣ рдЕрд╕рд▓реА рдмрдЧ рдирд╣реАрдВ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдорд╛рдорд▓реЗ рдХреЛ рдмрдВрдж рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ ?
рдХрд╛рд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:
removeClippedSubViews
рд╣рдЯрд╛рдирд╛ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдЧрдд рдХреЗ рд╕рд╛рде рдПрдХ рд╣реИрдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИредрдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдирд╛ рдХрд┐ рдпрд╣ рдЕрднреА рднреА FlatList/SectionList рдХреЗ рднреАрддрд░ рдПрдХ рд╕рдХреНрд░рд┐рдп рдмрдЧ рд╣реИред
рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ/рд╕реЗрдХреНрд╢рдирд▓рд┐рд╕реНрдЯ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдореБрджреНрджреЗ рднреА рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧ рдЕрднреА рддрдХ рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рд╕реЗ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХреНрдпрд╛ рдореИрдВрдиреЗ рдКрдкрд░ рдЬреЛ рдХреБрдЫ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕реЗ рд╕реНрд╡рдпрдВ рдШрдЯрдХреЛрдВ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
ListView рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреЛ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ?
рдореИрдВ рдХреЛрдИ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рдЬрд╣рд╛рдБ ListView рдмреЗрд╣рддрд░ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рдЖрдк рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ ListView рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдЙрдирд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреВрдЫреЗ рдЧрдП рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд┐рдВрджреБ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╣реИ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдкрд░ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЦреБрд▓рд╛ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдПред
рдореИрдВ рдЕрдкрдиреЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдпрд╛ рдЬрд╣рд╛рдВ рдореИрдВ рдиреЗрд╕реНрдЯреЗрдб рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдпрд╛рдиреА рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдХрд╛ рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдкрдВрдХреНрддрд┐ рдХреЗ рднреАрддрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдиреЗрд╕реНрдЯреЗрдб рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рдореЗрдВ removeClippedSubviews={false}
рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
react-native-cli: 2.0.1
react-native: 0.41.2
iOS 9.x рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ iPad 3/iPad Mini рдЬреИрд╕реЗ рдкреБрд░рд╛рдиреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ ListView / FlatList / VirtualizedList / WindowedListView (рдЬреЛ рднреА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдбрд╝реА рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рд╕рд╣рдЬ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
рдиреЛрдЯ: рдореИрдВ рдлреНрд▓реИрдЯ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреЛрдИ рдЪрд┐рддреНрд░ рдирд╣реАрдВ, рдХреЗрд╡рд▓ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдкрд╛рда рдШрдЯрдХред
рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ 7000 рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕реНрдХреНрд░реЙрд▓ рд╕реБрдЪрд╛рд░реВ рд╣реИ рдФрд░ рддрдбрд╝рдХрд╛ рд╣реБрдЖ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ
рд╕рд╣рдордд - рдореИрдВ рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯ-рдСрдл-рд╡реНрдпреВ рдХрдХреНрд╖ рднреА рд╕рд╛рдлрд╝ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдХрдИ рдРрдкреНрд╕ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреА рдХрдореА рд╣реИред рдореИрдВ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдЗрд╕рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЧреЛрддрд╛ рд▓рдЧрд╛рдКрдВрдЧрд╛ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред
резреж рдЬреВрди реирежрезрен рдХреЛ рдЕрдкрд░рд╛рд╣реНрди рей:рейреж +резрежрежреж, рдПрд░рд┐рдпрд▓ рдлрд╛рд▓реНрдбреБрдЯреЛ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
iOS 9.x рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ iPad 3/iPad Mini рдЬреИрд╕реЗ рдкреБрд░рд╛рдиреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ ListView / FlatList / VirtualizedList / WindowedListView (рдЬреЛ рднреА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдбрд╝реА рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рд╕рд╣рдЬ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
рдиреЛрдЯ: рдореИрдВ рдлреНрд▓реИрдЯ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреЛрдИ рдЪрд┐рддреНрд░ рдирд╣реАрдВ, рдХреЗрд╡рд▓ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдкрд╛рда рдШрдЯрдХред
рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ 7000 рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕реНрдХреНрд░реЙрд▓ рд╕реБрдЪрд╛рд░реВ рд╣реИ рдФрд░ рддрдбрд╝рдХрд╛ рд╣реБрдЖ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВред
рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ @lprhodes , рдпрд╣рд╛рдВ рдореИрдВ рдлреНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ~ 200 рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдЖрдИрдУрдПрд╕ 9 рдХреЗ рд╕рд╛рде рдЖрдИрдкреИрдб 3 рдкрд░ рддрдбрд╝рдХрд╛ рд╣реБрдЖ рд╣реИред
import React, { Component } from 'react';
import {
FlatList,
StyleSheet,
View,
} from 'react-native';
import Expo from 'expo';
import {
Text,
ListItem,
SearchBar,
} from 'react-native-elements';
class Feed extends Component {
loadFeed() {
const {data} = this.props;
const sections = [];
data.forEach((value, index) => {
const sectionName = value.name_line_sp;
const section = sections.find((section) => {
return section.title === sectionName;
});
if (section) {
section.data.push(value);
} else {
sections.push({
title: sectionName,
data: [value]
});
}
});
if (__DEV__) {
console.log('Sections size', sections.length);
}
return sections[0];
}
componentDidMount() {
this.flatListRef.scrollToOffset({
animated: false,
offset: 48
});
}
render() {
const feed = this.loadFeed();
return (
<View style={{flex: 1}}>
<Text h5 style={styles.section_title}>{feed.title} ({feed. data.length})</Text>
<FlatList
style={{flex: 1}}
ref={(list) => { this.flatListRef = list; }}
debug
ListHeaderComponent={() => (
<SearchBar
lightTheme
placeholder='Search...' />
)}
data={feed.data} // ~217 records
keyExtractor={(item) => (
item.code_group
)}
renderItem={({ item }) => {
return (
<ListItem
hideChevron
key={item.code_group}
title={`${item.name_group_sp}`}
subtitle={`${item.price_prod}`}
containerStyle={{ backgroundColor: 'white' }}
/>
);
}}
/>
</View>
)
}
}
import catalog from './data/catalog.json';
class App extends Component {
render() {
const data = catalog;
return (
<View style={styles.container}>
<Text h3 style={styles.title}>Skillcase</Text>
<Feed data={data} />
</View>
);
}
}
const styles = StyleSheet.create({
title: {
margin: 20,
marginBottom: 10,
color: 'white'
},
section_title: {
padding: 20,
color: 'white',
backgroundColor: '#1976D2',
},
container: {
flex: 1,
paddingTop: Expo.Constants.statusBarHeight,
backgroundColor: '#42A5F5',
},
});
Expo.registerRootComponent(App);
рдпрд╛ рдПрдХреНрд╕рдкреЛ рдпреВрд░реА : рдХреНрд╕реНрдк : v-xvw.outatime.skillcase.exp.direct :80
рдзрдиреНрдпрд╡рд╛рдж !!!
рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдореЗрдВ рдХрдИ рдЦрд░рд╛рдм рдкреНрд░рдерд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓рдЧрд╛рддрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд░реАрдмрд╛рдЗрдВрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рд╕реАрдкреАрдпреВ рдкрд░ рдПрдХ рдХрд░ рд╣реИ рдФрд░ рдЖрдкрдХреА рд╕реВрдЪреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдкрдХрд╛ ListItem рдШрдЯрдХ рдПрдХ PureComponent рд╣реИ, рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рд╕рднреА рдкреНрд░реЙрдкреНрд╕ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реА-рд░реЗрдВрдбрд░ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдерд▓реЗ-рдмрд░рд╛рдмрд░ рд░рд╣реЗрдВред рдпрд╣ рдЖрдкрдХреЗ рдмрд╛рдХреА рдРрдк рдХреЗ рд▓рд┐рдП рднреА рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИред
рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдорджрдж рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореИрдВ рдзреАрдореЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдкреВрд░реНрдг рдкреВрд░реНрдгрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ред рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬреИрд╕реЗ рдЕрдиреНрдп рдРрдкреНрд╕ рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдХрд┐рддрдирд╛ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ?
@outaTiME рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдВрдбрд░ рдкрд░ рд▓реЛрдбрдлреАрдб рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
@lprhodes рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдПрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреА рд╣реИ, btw рдореИрдВ рдХреБрдЫ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЕрднреА рднреА iOS 9 рдХреЗ рд╕рд╛рде iPad 3 рдкрд░ рддрдбрд╝рдХрд╛ рд╣реБрдЖ рд╣реВрдВ (iPhone 7 рдореЗрдВ рд╕рднреА рд╕реБрдЪрд╛рд░реВ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ), рдореИрдВ рдХреБрдЫ рдЧрд▓рдд @sahrens рдХрд░рддрд╛ рд░рд╣рддрд╛ рд╣реВрдВ? рдЖрдкрдХреА рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП рд╢реБрдХреНрд░рд┐рдпрд╛ред
import React, { Component, PureComponent } from 'react';
import {
FlatList,
ListView,
Text,
StyleSheet,
View,
} from 'react-native';
import Expo from 'expo';
import {
ListItem,
SearchBar,
} from 'react-native-elements';
class FeedRow extends PureComponent {
render() {
const item = this.props.data;
return (
<Text>{item.name_group_sp}</Text>
)
}
}
class Feed extends Component {
constructor(props) {
super(props);
this.storeListRef = this.storeListRef.bind(this);
}
loadFeed() {
const {data} = this.props;
const sections = [];
data.forEach((value, index) => {
const sectionName = value.name_line_sp;
const section = sections.find((section) => {
return section.title === sectionName;
});
if (section) {
section.data.push(value);
} else {
sections.push({
title: sectionName,
data: [value]
});
}
});
if (__DEV__) {
console.log('Sections size', sections.length /*, images.length */);
}
return sections[0];
}
componentDidMount() {
this.flatListRef.scrollToOffset({
animated: false,
offset: 48
});
}
renderItem(item) {
return (
<FeedRow data={item.item} />
);
}
keyExtractor(item) {
return item.code_group;
}
listHeaderComponent() {
return (
<SearchBar
lightTheme
placeholder='Buscar...' />
);
}
storeListRef(list) {
this.flatListRef = list;
}
render() {
const feed = this.loadFeed();
return (
<View style={{flex: 1}}>
<Text h5 style={styles.section_title}>{feed.title} ({feed. data.length})</Text>
<FlatList
style={{flex: 1}}
ref={this.storeListRef}
debug
// pagingEnabled
ListHeaderComponent={this.listHeaderComponent}
data={feed.data} // ~217 records
keyExtractor={this.keyExtractor}
renderItem={this.renderItem}
/>
</View>
)
}
}
import catalog from './data/catalog.json';
class App extends Component {
render() {
const data = catalog;
return (
<View style={styles.container}>
<Text h3 style={styles.title}>Skillcase</Text>
<Feed data={data} />
</View>
);
}
}
const styles = StyleSheet.create({
title: {
margin: 20,
marginBottom: 10,
color: 'white'
},
section_title: {
padding: 20,
color: 'white',
backgroundColor: '#1976D2',
},
container: {
flex: 1,
paddingTop: Expo.Constants.statusBarHeight,
backgroundColor: '#42A5F5',
},
});
Expo.registerRootComponent(App);
рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди debug
рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдЪреАрдЬреЗрдВ рдПрдХ рдЯрди рдХрдо рд╣реЛ рдЬрд╛рдПрдВрдЧреАред рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдпрд╣ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдЙрддреНрдкрд╛рджрди рдирд┐рд░реНрдорд╛рдг рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рди рдХрд┐ рдПрдХ рджреЗрд╡/рдбреАрдмрдЧ рдмрд┐рд▓реНрдбред рдЕрдВрдд рдореЗрдВ, рдЖрдк рдЕрднреА рднреА рд╣рд░ рд░реЗрдВрдбрд░ рдореЗрдВ рдПрдХ рдирдИ рд╕реНрдЯрд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдСрдирдорд╛рдЙрдВрдЯ рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓рдЯреЙрдлрд╝рд╕реЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрдирд┐рд╢рд┐рдпрд▓рд╕реНрдХреНрд░реЙрд▓рдкреЛрдЬрд╝рд┐рд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@sahrens yup рдмрд┐рдирд╛ debug
рдзреНрд╡рдЬ рдХреЗ рдФрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдкреНрд░реЛрдбрдХреНрд╢рди рдмрд┐рд▓реНрдб рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдХрдо рддрдбрд╝рдХрд╛ рд╣реБрдЖ рдЪрд▓рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдПрдХреНрд╕рдкреЛ 17 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛ рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ 0.44 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг (0.45 ) рдореЗрдВ FlatList
рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИред
рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рд╣рд░ рд░реЗрдВрдбрд░ рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓ рдХреНрдпреЛрдВ рдмрдирд╛рддреЗ рд╣реИрдВ? рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ flex
рд╢реИрд▓рд┐рдпреЛрдВ ( Feed
рдШрдЯрдХ рдореЗрдВ) рдХреЗ рд╕рд╛рде рд░реЗрдВрдбрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
App
рд░реЗрдВрдбрд░Feed
рд░реЗрдВрдбрд░FeedRow
рд░реЗрдВрдбрд░рдЬреИрд╕рд╛ рдХрд┐ @lprhodes рдиреЗ рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдВрдбрд░ рдкрд░ рд▓реЛрдбрдлреАрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ Feed
рд░реЗрдВрдбрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ?
рдЬрдм рдЖрдк initialScrollPosition
рддреЛ рдЖрдкрдХрд╛ рдорддрд▓рдм initialScrollIndex
рд╕рд╣реА рд╣реИ? рдпрд╣ scrollToOffset
рддрд░рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрдм Feed
рдорд╛рдЙрдВрдЯ рд╣реЛрдиреЗ рдкрд░ рдореБрдЭреЗ ListHeaderComponent
(рдКрдВрдЪрд╛рдИ рдХрд╛ 48px) рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдЗрд╕ рдХрдВрд╕реЛрд▓ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдореИрдВ renderItem рдХреЗ рд▓рд┐рдП PureComponent рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ?
VirtualizedList: You have a large list that is slow to update - make sure your renderItem function renders components that follow React performance best practices like PureComponent, shouldComponentUpdate, etc. {"dt":85588,"prevDt":1497296394821,"contentLength":10023}
рдзрдиреНрдпрд╡рд╛рдж !!
рд╡рд╣ рдЪреЗрддрд╛рд╡рдиреА рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдмрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдорд╛рд╕реНрдЯрд░ рдкрд░ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рдЙрдВрдЯ рдХреЗ рд▓рд┐рдП 85 рд╕реЗрдХрдВрдб рдкрд╛рдЧрд▓ рдзреАрдорд╛ рд╣реИ - рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЦреЛрджрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрддрдирд╛ рд╕рдордп рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╡рд╣рд╛рдБ рдХрдИ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ рдпрджрд┐ рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЧреВрдЧрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдорджрдж рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдореБрджрд╛рдп рдореЗрдВ рдкреВрдЫрддреЗ рд╣реИрдВред
рдФрд░ рд╣рд╛рдБ, рдореЗрд░рд╛ рдорддрд▓рдм рдерд╛ initialScrollIndex
ред рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ getItemLayout
рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рд╣рд┐рд╕рд╛рдм ListHeaderComponent
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдорд╣рд╛рди @sahrens , рдореБрдЭреЗ рдкреБрд░рд╛рдиреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЬреИрд╕реЗ iPad 3 рдпрд╛ OS рд╕рдВрд╕реНрдХрд░рдг iOS 9 рд╕реЗ рдбрд░ рд▓рдЧрддрд╛ рд╣реИ ... рдирдП рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреЛрдИ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рд╕реА рдФрд░ рдХреЛ рднреА рдЙрд╕реА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ ... рдереЛрдбрд╝реА рджреЗрд░ рдореЗрдВ рдореИрдВ рд╕рдореБрджрд╛рдп рд╕реЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реВрдБрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рдФрд░ рдЧрд╣рд░рд╛рдИ рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реВрдБ, рдзрдиреНрдпрд╡рд╛рдж !!!
рд╣рд╛рдп рдореЗрд░рд╛ рдлрд┐рдХреНрд╕ рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдХреЛ style={{ backgroundColor: 'white' }}
рджреЗрдХрд░
рддреЛ @hramos рдФрд░ @sahrens , FlatList рдХреЗ рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ? рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЗрд╕ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ 0.44.0
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ react-native-tab-vew
, рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпрд╛ рдХреЛрд░ рдЯреАрдо рдЗрд╕ рд╕рдордп рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред
@sjmueller @sahrens рдирд╣реАрдВ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рддрдп рд╣реЛ рдЧрдИ рд╣реИ?
@hramos рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕ рдкреВрд░реЗ рд╕реВрддреНрд░ рдХреА рдлрд┐рд░ рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдХреА рд╣реИред рдореИрдВ рдЗрд╕реЗ рдпрд╛рдж рдХрд░ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рднреА рдореИрдВрдиреЗ @sahrens рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХрд┐ FlatList рдЕрджреГрд╢реНрдп рд╣реЛ рд░рд╣рд╛ рд╣реИ рдорд╛рд╕реНрдЯрд░ рдкрд░ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рди рд╣реА рдореИрдВрдиреЗ рдХреЛрдИ рдХрдорд┐рдЯ/рдкреАрдЖрд░ рджреЗрдЦрд╛ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЕрдВрдд рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред
рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ @yaronlevi lazy={true}
рдХреЛ react-native-tab-view
рдпрд╛ TabNavigator
рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдИрдлреЛрди 7 рдкреНрд▓рд╕ рдкрд░ рднреА рдЕрдЬреАрдм рджреЗрд░реА рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
@knappdev рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ 0.44.2 рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж lazy
рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ 0.44.0 рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ рдФрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рд╕рдлрд▓рддрд╛ рдорд┐рд▓реА рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдореЗрд░рд╛ рдХрд╛рдо рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдореВрд╡рдХреНрд▓рд┐рдкреНрдб рд╕рдмрд╡реНрдпреВрдЬрд╝ рдХреЛ рдЪрд╛рд▓реВ/рдмрдВрдж рдХрд░рдирд╛ рд╣реИред
constructor (props) {
super(props)
this.state = { removeClippedSubviews: false }
this._disableRemoveClippedSubviews = this._disableRemoveClippedSubviews.bind(this)
this._onViewableItemsChanged = this._onViewableItemsChanged.bind(this)
this._renderItem = this._renderItem.bind(this)
}
_disableRemoveClippedSubviews () {
this.setState({ removeClippedSubviews: false })
}
_onViewableItemsChanged({ viewableItems, changed }) {
if (!this.state.removeClippedSubviews) this.setState({ removeClippedSubviews: true })
if (this._disableRemoveClippedSubviewsTimeout) clearTimeout(this._disableRemoveClippedSubviewsTimeout)
this._disableRemoveClippedSubviewsTimeout = setTimeout(this._disableRemoveClippedSubviews, 3000)
}
render () {
const { removeClippedSubviews } = this.state
return (
<FlatList
renderItem={this._renderItem}
removeClippedSubviews={removeClippedSubviews}
onViewableItemsChanged={this. _onViewableItemsChanged}
/>
)
}
рд╣рдЯрд╛рдПрдБClippedSubviews рдЕрдм рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реИред
рдзреАрдореЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдкрдиреЗ RNTester рдРрдк FlatListExample рдХреЛ рдЖрдЬрдорд╛рдпрд╛ рд╣реИ?
FlatListExample рдЖрдкрдХреЗ рд▓рд┐рдП рдХреИрд╕рд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИ?
рд╣рдЯрд╛рдПрдБClippedSubviews рдЕрдм рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реИред
рд╣рд╛рдБ - рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╕рдордп рдореИрдВ рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЭрдЯрдХреЗ рдорд┐рд▓рддреЗ рд╣реИрдВред
рдореИрдВ рддрдм (рджреВрд░) рджреГрд╢реНрдп рдХрдХреНрд╖реЛрдВ рдХреЛ рдЦрд╛рд▓реА рд╡рд╛рд▓реЗ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрдирд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ
рддреЛ, рдЕрдВрдд рдореЗрдВ, рдЕрднреА рднреА removeClippedSubviews={false}
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдЗрддрдирд╛ рдХрдард┐рди рд╣реИ?
рдореЗрд░реЗ рд▓рд┐рдП рдлрд┐рдХреНрд╕ рдЖрдИрдУрдПрд╕ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬреЗрдПрд╕ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдерд╛
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ lazy: true
рд╕реЗрдЯ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рдЧрдпрд╛ рд╣реИред рдЕрднреА рддрдХ рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ removeClippedSubViews={false}
рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реВрдВ
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо
рд╕рднреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░/рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред removeClippedSubViews={false}
рд╣рдореЗрд╢рд╛ iPhone 7 рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рд╕реВрдЪреА рджреГрд╢реНрдп рдореЗрдВ рдЖрдВрджреЛрд▓рди рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред
componentDidMount() {
requestAnimationFrame(() => {
// HACK TO RELOAD DATA
this.refs._list.scrollTo({x: 1, y: 0, animated: false})
});
}
рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрджрд╛рд╣рд░рдгред
<ListView
ref="_list"
dataSource={this.state.dataSource}
renderRow={(data, sectionId, rowId) => <Row
rowId={rowId}
selectedRow={this.state.selectedRow}
onPressRow={this._pressRow.bind(this)}
{...data}/>}
renderSeparator={(sectionId, rowId) => <View key={rowId} style={styles.separator} />}
removeClippedSubViews={false}
initialListSize={SortedBrandList.count}/>
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
реирек рдЕрдЧрд╕реНрдд реирежрезрен рдХреЛ рдЕрдкрд░рд╛рд╣реНрди рей:рекрек рдмрдЬреЗ рдкреАрдЯрд░ рд╕реБрд╡рд╛рд░рд╛ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рдЪрд╛рд░реЛрдВ рдУрд░ рдХрд╛рдо рдХрд░реЗрдВ
рд╕рднреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░/рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред'''рдШрдЯрдХрдбрд┐рдбрдорд╛рдЙрдВрдЯ () {
рдЕрдиреБрд░реЛрдзрдПрдиреАрдореЗрд╢рдирдлреНрд░реЗрдо (() => {
// рдбреЗрдЯрд╛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдХрд░реЗрдВ
this.refs._list.scrollTo({x: 1, y: 0, рдПрдирд┐рдореЗрдЯреЗрдб: рдЕрд╕рддреНрдп})
});
}''''''
рд░реЗрдлрд░реА = "_ рд╕реВрдЪреА"
рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд = {рдпрд╣ред рд░рд╛рдЬреНрдпред рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд}
рд░реЗрдВрдбрд░рд░реЛ = {(рдбреЗрдЯрд╛, рд╕реЗрдХреНрд╢рдирдЖрдИрдбреА, рд░реЛрдЖрдИрдб) => }
рд░реЗрдВрдбрд░рд╕реЗрдкрд░реЗрдЯрд░ = {(рд╕реЗрдХреНрд╢рди рдЖрдИрдбреА, рдкрдВрдХреНрддрд┐ рдЖрдИрдбреА) =>}
рдирд┐рдХрд╛рд▓реЗрдВрдХреНрд▓рд┐рдкреНрдбрд╕рдмрд╡реНрдпреВ = {рдЭреВрдард╛}
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА рдЖрдХрд╛рд░ = {SortedBrandList.count}
/>'''-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВред
рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛, рдХрдо рд╕реЗ рдХрдо рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░, рдЗрд╕рдХреЗ рд╕рд╛рде:
<ListView removeClippedSubViews={false} .... />
рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рдпрд╣рд╛рдВ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╕реВрдЪреА рджреГрд╢реНрдп рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдирд╣реАрдВ рд╣реИ рддреЛ рдХреНрд▓рд┐рдк рдХрд┐рдП рдЧрдП рд╕рдмрд╡реНрдпреВрдЬрд╝ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рджрд┐рдирдЪрд░реНрдпрд╛ рд╕реАрдорд╛рдУрдВ рдХреА рдареАрдХ рд╕реЗ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИред рдпрд╣ рдЕрдХреНрд╕рд░ рдХрд┐рд╕реА рднреА ListView рдШрдЯрдХ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдСрдлрд╕реНрдХреНрд░реАрди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рдпрд╣ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдард┐рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рдорд╕реНрдпрд╛ рд╣реИ: https://github.com/facebook/react-native/blob/master/React/Views/RCTView.m#L321 -L369
рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдпрд╣ рдЬрд┐рд╕ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реНрдерд╛рди рдХреЛ рдорд╛рдк рд░рд╣рд╛ рд╣реИ рд╡рд╣ рдХрд╣реАрдВ рдЧрд▓рдд рд╣реИред рдЕрдм рдЗрд╕реЗ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред
рдпрд╣ рдареАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? https://github.com/facebook/react-native/pull/15669/files
рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдХреЛрдИ рдлрд┐рдХреНрд╕ рдирд╣реАрдВ рд╣реИ?
@petersuwara : рдЖрдкрдиреЗ рдХреНрдпрд╛ рдХрд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рджред @MattFoley : рдЖрдкрдХрд╛ рдлрд╝рд┐рдХреНрд╕ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдХрдм рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛?
рдХреЗрд╡рд▓ рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ, рдЗрд╕реЗ рд╕реВрдЪреА рджреГрд╢реНрдп рдореЗрдВ рднреА рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред
рдореБрдЭреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд▓ рдорд┐рд▓рд╛ред
рдЬрдм рдбреЗрдЯрд╛ рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓рдорд╛рдЙрдВрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рдХрд┐рд╕реА рджреВрд░рд╕реНрде рд╕реНрд░реЛрдд рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрди рдХреЛрдб рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ:
setTimeout(function(){
this.updateDataSource(array,newArray)
},30)
updateDataSource = (comments,dataSource) =>{
this.setState({
allComments:comments,
dataSource: this.state.dataSource.cloneWithRows(dataSource),
isLoading:false
})
}
рдФрд░ рдереЛрдбрд╝реА рджреЗрд░реА рдХреЗ рджреМрд░рд╛рди рдЖрдк рд╣рдореЗрд╢рд╛ рдПрдХ рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЗрддрдирд╛ рдЫреЛрдЯрд╛ рд╣реИ рдХрд┐ рджрд┐рдЦрд╛рдИ рднреА рдирд╣реАрдВ рджреЗрддрд╛ред
рдореБрдЭреЗ @nathvarun рдХрд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИред рдШрдЯрдХ рдмрдврд╝рддреЗ рдзрд╛рдЧреЗ рдФрд░ рдШрдЯрдХ рдХреЗ рдЕрджреНрдпрддрди рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдереНрд░реЗрдб рдХреЗ рдмреАрдЪ рдХреБрдЫ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред рдЕрдЧрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд╣реИ рддреЛ рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рджреЛ рдзрд╛рдЧреЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреЗ рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдЙрди рдШрдЯрдХреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдЙрдВрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди рдореЗрдВ рдЯреИрдм рдХреЛ рдЕрд╕рд╛рдЗрди рдХреА рдЧрдИ рд╕реНрдХреНрд░реАрди рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдзрд┐рдХ рдЪрдпрдирд┐рдд рд╣реИрдВ - рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдШрдЯрдХ рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдХреИрд╕реЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкреАрдЖрд░ рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕рдХрд╛ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕реМрднрд╛рдЧреНрдп рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рдЙрд╕ рдкреАрдЖрд░ рдкрд░ рдЭрдВрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдЧрд╛?
@MattFoley рдЗрд╕рдХрд╛ рд╡рд┐рд▓рдп рд╣реЛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдореИрдВ рдЕрдм рдЖрдкрдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред
TabNavigator
рдХреЗ react-navigation
рдХреЛ lazy: true
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ... рд▓реЗрдХрд┐рди рдЗрд╕реЗ react-native
рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд░рдХреЗ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдЖрдк рд╕реЗрдХреНрд╢рдирд▓рд┐рд╕реНрдЯ рдпрд╛ рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдмрд╕ ref = {(ref) => this.sectionList = ref} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдФрд░ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ this.sectionList.recordInteraction() - рдХреЛ рдЖрдкрдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
@MattFoley рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдлрд╝рд┐рдХреНрд╕ рдХреЛ рдорд░реНрдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдм рдпрд╣ 0.50 рд░рд┐рд▓реАрдЬрд╝ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ: https://github.com/facebook/react-native/commit/03ae65bc25185fe6d7f62e66f5575ced5c3e8378
рдореИрдВрдиреЗ рдЕрднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ <ListView />
рдкрд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдореБрдЭрд╕реЗ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рд░рд╣реА рд╣реИ? рдпреЗ рд░рд╣рд╛ рдореЗрд░рд╛ рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди:
"dependencies": {
"native-base": "^2.3.1",
"react": "^16.0.0",
"react-native": "^0.50.0-rc.1",
"react-native-linear-gradient": "^2.3.0",
"react-native-modal": "^4.1.0",
"react-native-simple-store": "^1.3.0",
"react-navigation": "^1.0.0-beta.11"
},
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ListView
рдЕрдм рддрдХ рдкрджрд╛рд╡рдирдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ FlatList
рд╕рд╛рде рдмреЗрд╣рддрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЕрднреА рднреА 0.50.3 рдкрд░ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдореИрдВрдиреЗ рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ред
рд╢реБрдХреНрд░рд╡рд╛рд░, 17 рдирд╡рдВрдмрд░, 2017 рдХреЛ рд╕реБрдмрд╣ 8:39 рдмрдЬреЗ рдХреЙрд▓рд┐рди рд░рд╛рдорд╕реЗ рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЕрднреА рднреА 0.50.3 рдкрд░ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/facebook/react-native/issues/1831#issuecomment-345294840 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAZnGZ9oz7uKXx-wz3KFg-FSIzejAfM6ks5s3bavgaJpZM4FP1nt
.
рдЖрд╣, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА _use_ FlatList рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдпрд╣ рдЕрднреА рднреА 0.50.3 рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред removeClippedSubviews рдХрд╛ рдХреЛрдИ рдЕрд╕рд░ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдо рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ?
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА 0.50.3 рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВред
рдлрд┐рд░ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рдПрдХ рдЬреНрд╡рд▓рдВрдд рдореБрджреНрджрд╛ рд╣реИред
рдирд╡реАрдирддрдо рдПрдХреНрд╕рдкреЛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдПрд╕рдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВред рдпрд╣ рдХреЗрд╡рд▓ TabNavigator рдореЗрдВ рддреАрд╕рд░реЗ ListView рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рдХреЛ рд╕реНрд╡реИрдк рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдирдпрд╛ рддреАрд╕рд░рд╛ рдкреЗрдЬ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ removeClippedSubviews рдиреЗ рдЗрд╕реЗ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред
requestAnimationFrame(() => { this.listview.scrollTo({y: 1}); });
рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред
this.listView.scrollToEnd()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓рд╛ , рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХреЛрдВ рдХреА рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЧрдгрдирд╛ рдХрд░рдиреА рдкрдбрд╝реА рдФрд░ рдлрд┐рд░ scrollTo()
рдЬрд╛рдирд╛ рдкрдбрд╝рд╛
рдлреНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЙрд╕реА рд╕рд░рдгреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдЕрд▓рдЧ рд╣реИ рдпрд╛ рдирд╣реАрдВред рддреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
removeClippedSubviews={false} рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред
<ListView
data={this.state.mockData}
renderRow={(rowData) => this.renderRow(rowData)}
removeClippedSubviews={false}
/>
@edmengel рд╕рд╣реА рд╣реИред рдореИрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдмрдЧ рдерд╛ред
рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ:
рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:
рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд▓рд┐рдП React-native-router-flux@^4.0.0-beta.27
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ App.js рдЗрд╕реЗ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдореЗрд░реЗ рдЦреЛрдЬ рдкреГрд╖реНрда рдореЗрдВ рдПрдХ рд╕реВрдЪреАрджреГрд╢реНрдп рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдпрд╣ рдмрдЧ рдерд╛ред рдпрд╣ рддреАрд╕рд░реЗ рдЯреИрдм рдкрд░ рд╣реИред
<Provider store={store}>
<View style={{flex: 1}}>
<Router hideNavBar={true}>
<Scene key="modal" modal>
{/* Tab Container */}
<Scene key="tabbar" tabs={true} tabBarPosition="bottom" tabBarStyle={{borderTopColor:'black', borderTopWidth:1,backgroundColor:'white'}}>
{/*Tabs */}
<Scene key="NewPage" component={NewPage} title="NewPage" icon={TabIcon} hideNavBar={true} />
<Scene key="NewPage2" component={NewPage2} title="Newpage2" icon={TabIcon} hideNavBar={true} />
<Scene key="SearchPage" component={SearchPage} title="Search" hideNavBar={true} />
</Scene>
</Scene>
</Router>
</View>
</Provider>
рдЬрдм рдореИрдВрдиреЗ рддреАрд╕рд░реЗ рдЯреИрдм рд╕реЗ рджреВрд╕рд░реЗ рдЯреИрдм рдореЗрдВ рдЦреЛрдЬ рдкреГрд╖реНрда (рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕реВрдЪреАрджреГрд╢реНрдп рд╣реЛрддрд╛ рд╣реИ) рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рддреЛ рд╕реВрдЪреАрджреГрд╢реНрдп рдиреЗ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдХрд┐рдВрдЧ рд╣реИрдХ рдорд┐рд▓рд╛ред
render() {
setTimeout(() => {
this.sectionList && this.sectionList.recordInteraction();
}, 50);
return (
<SectionList ref={(view) => { this.sectionList = view }} />
)
}
<Flatlist style={{ flex: 1 }}/>
рдпрд╣ рдЯреНрд░рд┐рдХ рдореЗрд░реЗ рдХрд╛рдо рдЖрдИред
0.55.4
рдкрд░ ScrollView
рдФрд░ ListView
рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ред removeClippedSubviews={false}
рдЬреЛрдбрд╝рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд▓рд╛рдкрддрд╛ рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ https://github.com/facebook/react-native/issues/13600#issuecomment -315629140
рд░реЗрдВрдбрд░ рдкрд░ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рдмрд╛рдж рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рд┐рдХреНрдд рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рдВрдХреНрд░рдордг рдХрд░ рд░рд╣рд╛ рд╣реИред
рджреГрд╢реНрдп рдХреЛ рдлреНрд▓реЗрдХреНрд╕ рдХрд░рдиреЗ рд╕реЗ рднреА рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реАред
рдХреЛрдИ рдЕрдиреНрдп рд╕реБрдЭрд╛рд╡?
рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕реНрдХреНрд░реЙрд▓ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рдж рд╣реА рд╣реЛрддрд╛ рд╣реИ ...
https://streamable.com/l5arv
рджреГрд╢реНрдп рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП chrome-devtools рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рднреА рд╕рдмрд╡реНрдпреВ рдХреНрд▓рд┐рдк рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдЕрднреА рднреА рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реИ, @hramos рдХреГрдкрдпрд╛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВред
рдЕрднреА рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдп рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ? рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рд╕реЗ рд╡рд╛рдкрд╕ рд╕реАрдзреЗ рдиреЗрдЯрд┐рд╡ рдХреЛрдб рдореЗрдВ рдЪрд▓реЗ рдЧрдПред
рдЕрдЧрд░ рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣рд╛рде рджреЗрдВ @petersuwara
рдпрд╣ рдореБрджреНрджрд╛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ _рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ_ рдФрд░ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдВред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд▓реЙрдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдмрддрд╛рдИ рдЧрдИ рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдЬрд┐рд╕рдиреЗ рдмрд╛рдж рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИ, рдареАрдХ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╣рдо Facebook рдкрд░ FlatList
_extensively_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдХреЛрдИ рд╢рд┐рдХрд╛рдпрдд рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╛рдордиреЗ рдирд╣реАрдВ рдЖрдИ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛, рд░рд┐рдкреНрд░реЛ рдХреЗ рдЪрд░рдгреЛрдВ рдХреА рд╕реНрдкрд╖реНрдЯ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде, рдпрд╛ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдПрдХ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛, рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧреАред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рдЗрд╕реА рдореБрджреНрджреЗ рдХреЛ 0.17 рдкрд░ рджреЗрдЦ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди
removeClippedSubviews
рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред