React-native: [рдлреНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ] рд╕реНрдХреНрд░реЙрд▓ рддрдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 1 рдЬреБрд▓ре░ 2015  ┬╖  223рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react-native

рдирдорд╕реНрддреЗ,
рдореЗрд░реЗ рдкрд╛рд╕ рд╕реВрдЪреА рджреГрд╢реНрдп рд╣реИ рдЬреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдиреАрдп рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рджреВрд░рд╕реНрде рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ ListView.DataSource рдХреЗ рд▓рд┐рдП рдЖрд░рдВрднрд┐рдХ рд╣реИрдВред рдпрд╣ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдореЗрд░реЗ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реЗрдЯ рд╣реИ рдЬреЛ ListView рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рдФрд░ ListView рдХреЛ рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рджреВрд░рд╕реНрде рдбреЗрдЯрд╛ рдХрдм рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдирдП рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рдХреНрд▓реЛрдирд╡рд┐рдерд░реЛ рдФрд░ рд╕реЗрдХреНрд╢рди рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░реЙрд▓ рдХреЗ рдмрд╛рдж рдирдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

renderbug

рдХреНрдпрд╛ рдпрд╣ рдмрдЧ рд╣реИ рдпрд╛ рдореБрдЭреЗ ListView рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рдХреИрд╕реЗ рдордЬрдмреВрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ 0.5 рдХреЗ рд╕рд╛рде рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди 0.6 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЕрдиреБрд╕рд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред

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

рдореИрдВ рдЗрд╕реА рдореБрджреНрджреЗ рдХреЛ 0.17 рдкрд░ рджреЗрдЦ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди removeClippedSubviews рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

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

+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 рдкреНрд░реЛрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реАред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреНрдп рд╕рднреА рдореБрджреНрджреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ?

https://github.com/facebook/react-native/blob/757d6d204ae2d743634af64e3f78a4aad9d53f70/Libraries/CustomComponents/ListView/ListView.js#L342 -L343

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛:

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

рдХрджрдо:

  1. рдРрдк рдЦреЛрд▓реЗрдВред
  2. рдЯреИрдмрдмрд╛рд░ рдЖрдЗрдЯрдо "#1" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
  3. рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХрд┐рд╕реА рднреА рд╕реНрдХреНрд░реЙрд▓ рддрдХ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ ..

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рдмрдЧ ListView рдХреЗ removeClippedSubviews рдкреНрд░реЛрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдФрд░ рдмрдЧ рдХреЗрд╡рд▓ рддрднреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рд╕рд╣реА рд╣реЛред

рдпрд╣ рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП RN 0.26.0 рдкрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдВ рднреА рд╡рд╣реА рд╕реНрдерд┐рддрд┐:

  • removeClippedSubviews={true}
  • ListView рдСрдл-рд╕реНрдХреНрд░реАрди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • рдЙрд╕ рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╛рдиреЗ рдкрд░, рд╕реВрдЪреАрджреГрд╢реНрдп рддрдм рддрдХ рдлрд┐рд╕рд▓ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛

рд╕реАрд╕реА @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 рд╕реВрдЪреА рдкрдВрдХреНрддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдмрдЧ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ:

  1. RemoveClippedSubViews = true рдХреЗ рд╕рд╛рде рдПрдХ рд╕реВрдЪреА рджреГрд╢реНрдп рджрд┐рдЦрд╛рдПрдВ;
  2. рдПрдХ рдкрдВрдХреНрддрд┐ рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдВ рдЕрдЧрд▓рд╛ рдкреГрд╖реНрда рджрд░реНрдЬ рдХрд░реЗрдВ;
  3. рд╕реНрдХреНрд░реАрди рдУрд░рд┐рдПрдВрдЯреЗрд╢рди 90 рдШреБрдорд╛рдПрдБ;
  4. рд╕реНрдХреНрд░реАрди рдХреЛ рд╡рд╛рдкрд╕ рдШреБрдорд╛рдПрдВ;
  5. рд╕реВрдЪреА рджреГрд╢реНрдп рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд╛рдкрд╕;

рд╕реВрдЪреА рджреГрд╢реНрдп рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛, рдПрдХ рд╕реНрдХреНрд░реАрди рд╕реЗ рдЕрдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ рд╕реВрдЪреА рджреГрд╢реНрдп рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдПрдХ рд╕реНрдХреНрд░реАрди рд╕реЗ рдХрдо рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ рд╕реВрдЪреА рджреГрд╢реНрдп рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИред 1fcd73f рд╕реНрдХреНрд░реЙрд▓ рдХреЗ рд╕рд╛рде ListView рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ :)

  1. рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ 0.26.3 . рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ
  2. рдореЗрд░реЗ рдЧреИрд░ рдЖрд░рдПрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдореИрдВрдиреЗ рджреЗрд╢реА рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреАред

рд╣рдордиреЗ рдЬреЛ рд╕рдорд╛рдзрд╛рди рдЪреБрдирд╛ рд╡рд╣ рдерд╛ рд╕реНрдХреНрд░реЙрд▓ рдЯреВ 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 рдлрд╝рд╛рдЗрд▓
screen shot 2017-01-05 at 10 55 30 am
screen shot 2017-01-05 at 10 58 25 am

рдХреНрдпрд╛ рдореБрдЭреЗ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ RN0.40 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ RN0.40 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореМрдЬреВрдж рд╣реИред
1, removeClippedSubViews = true рдХреЗ рд╕рд╛рде рдПрдХ рд╕реВрдЪреА рджреГрд╢реНрдп рджрд┐рдЦрд╛рдПрдВ;
2, рдПрдХ рдкрдВрдХреНрддрд┐ рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдВ рдЕрдЧрд▓рд╛ рдкреГрд╖реНрда рджрд░реНрдЬ рдХрд░реЗрдВ;
3, рд╕реНрдХреНрд░реАрди рдУрд░рд┐рдПрдВрдЯреЗрд╢рди 90 рдШреБрдорд╛рдПрдБ;
4, рд╕реВрдЪреА рджреГрд╢реНрдп рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд╛рдкрд╕;

ListView рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛, рдПрдХ рд╕реНрдХреНрд░реАрди рд╕реЗ рдЕрдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ ListView рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛

@endpress рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ, рдлрд┐рд░ рднреА RN0.41RC0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ 0.38 рдореЗрдВ рд░рдЦреЗрдВред

рдореЗрд░рд╛ рдХрд╛рдордХрд╛рдЬ 0 рдФрд░ 1 рдХреЗ рдмреАрдЪ ListView рдХреЗ рдкреИрдбрд┐рдВрдЧрдЯреЙрдк рдХреЛ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП ListView рд╣рд░ рдмрд╛рд░ рд░реАрдлреНрд░реЗрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдк рдкреГрд╖реНрдарднреВрдорд┐ рд░рдВрдЧ, рд╕реАрдорд╛, рдЖрджрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреНрдп рдЧреБрдг рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

@nihgwu рдЕрднреА рднреА

рдпрд╣ рд╣реИ рдореБрджреНрджрд╛
bug-3

@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} />
  )
}

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрдЭреЗ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдХрд░ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди рдПрдХ рдмрд╣реБрдд рд╣реА рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рдмрди рдЧрдпрд╛ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдм рдирд┐рдореНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  • рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд▓реЛрдЧ рдЕрдм FlatList/SectionList рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, ListView рдореЗрдВ рдХреЛрдИ рдПрдиреНрд╣рд╛рдВрд╕рдореЗрдВрдЯ рдирд╣реАрдВ рдЖрдПрдЧрд╛ред
  • рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдзрд╛рдЧреЗ рдореЗрдВ рдПрдХ рдЙрдЪрд┐рдд рдХрд╛рдордХрд╛рдЬ рдХреА рдкрд╣рдЪрд╛рди рдХреА рдЧрдИ рд╣реИред

рд╡рд┐рдЪрд╛рд░?

рдХреНрдпрд╛ рдпрд╣ рдЕрд╕рд▓реА рдмрдЧ рдирд╣реАрдВ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдорд╛рдорд▓реЗ рдХреЛ рдмрдВрдж рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ ?

рдХрд╛рд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:

  • рдпрд╣ рдлреНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдкрд░ рднреА рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓ рд╕реВрдЪреА рджреГрд╢реНрдп рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
  • removeClippedSubViews рд╣рдЯрд╛рдирд╛ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдЧрдд рдХреЗ рд╕рд╛рде рдПрдХ рд╣реИрдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдирд╛ рдХрд┐ рдпрд╣ рдЕрднреА рднреА FlatList/SectionList рдХреЗ рднреАрддрд░ рдПрдХ рд╕рдХреНрд░рд┐рдп рдмрдЧ рд╣реИред

рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ/рд╕реЗрдХреНрд╢рдирд▓рд┐рд╕реНрдЯ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдореБрджреНрджреЗ рднреА рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧ рдЕрднреА рддрдХ рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ рд╕реЗ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреНрдпрд╛ рдореИрдВрдиреЗ рдКрдкрд░ рдЬреЛ рдХреБрдЫ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕реЗ рд╕реНрд╡рдпрдВ рдШрдЯрдХреЛрдВ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

ListView рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреЛ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ?

13727

рдореИрдВ рдХреЛрдИ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рдЬрд╣рд╛рдБ 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 рдШрдЯрдХ рдореЗрдВ) рдХреЗ рд╕рд╛рде рд░реЗрдВрдбрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  1. App рд░реЗрдВрдбрд░
  2. Feed рд░реЗрдВрдбрд░
  3. рдлрд┐рд░ рдХрдИ 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 рд╕рд╣реА рд╣реИред рдореИрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдмрдЧ рдерд╛ред

рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ:
screen shot 2018-03-10 at 05 44 59

рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:
screen shot 2018-03-10 at 05 48 29

рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд▓рд┐рдП 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 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

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

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

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

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