рд╕рднреА рдХреЛ рдкреНрд░рдгрд╛рдо,
рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ rowHasChanged
рдХреЛ рд╣рдорд╛рд░реА рдХрд┐рд╕реА рднреА рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпреЗ рд╕реВрдЪрд┐рдпрд╛рдВ рдЕрдирдВрдд-рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рд╕реВрдЪрд┐рдпрд╛рдВ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗ, рддреЛ рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдЖрдЗрдЯрдо рд▓рд╛рдПрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕реВрдЪреА рдореЗрдВ рдбрдВрдк рдХрд░ рджреЗрдЧрд╛ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рднреА рд╣рдо рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреА рд╕рд╛рдордЧреНрд░реА рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рд╕реВрдЪреА рдореЗрдВ рд╕рднреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ shouldComponentUpdate
рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ rowHasChanged
рдХреЛ рдХреИрд╕реЗ рд╕рдордЭрд╛, рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдореИрдВрдиреЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕реВрдЪреА рдореЗрдВ рдЖрдЗрдЯрдо рдХреИрд╕реЗ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ: https://gist.github.com/janmonschke/c9c84b6050683da0c64f
рд╣рдо рдореВрд▓ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ:
constructor() {
// (...)
this.ds = new ListView.DataSource({rowHasChanged: (r1, r2) => {
console.log('rowHasChanged');
return r1 !== r2;
}});
// (...)
}
onEndReached = () => {
// append data to the end
setData = [...setData, ...genRandomSet()];
this.setState({
dataSource: this.ds.cloneWithRows(setData)
});
console.log('onEndReached');
};
render() {
return (
<ListView
dataSource={this.state.dataSource}
renderRow={this.renderRow}
onEndReached={this.onEndReached}
/>
);
}
рд▓реЗрдХрд┐рди rowHasChanged
рдХрднреА рд▓реЙрдЧ рдЗрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ? рдХреНрдпрд╛ ListView рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╣реИрдВ?
0.18.0
рдФрд░ 0.19.0
. рдореЗрдВ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░
рдЕрд░реЗ рдЬрдирдореЛрдВрд╢рдХреЗ, рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рд╕реБрдирд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕рдЪреНрдЪрд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрднрд┐рднреВрдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдареАрдХ рд╕реЗ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореБрджреНрджреЗ рд╣реИрдВред
react-native
рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдкреВрдЫреЗрдВ рдпрд╛ рдЕрдзрд┐рдХ рд░реАрдпрд▓ рдЯрд╛рдЗрдо рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рдбрд┐рд╕реНрдХреЙрд░реНрдб рдкрд░ рдкреВрдЫреЗрдВ #рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдЪреИрдирд▓редрдареАрдХ рд╣реИ, рдЗрд╕рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛: http://stackoverflow.com/a/33871118ред
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╣реА рдбреЗрдЯрд╛рд╕реЛрд░реНрд╕ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕реЗ рдХреНрд▓реЛрди рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ;)
рддреЛ рдЬрд┐рд╕реНрдЯ рд╕реЗ рдХреЛрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛:
setData = [...setData, ...genRandomSet()];
this.setState({
dataSource: this.state.dataSource.cloneWithRows(setData)
});
рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрдкрдХреЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдШреБрд╕ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ DataSource
рдХреЗ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдкрд░ рдЕрдзрд┐рдХ рдЬреЛрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдзрдиреНрдпрд╡рд╛рдж @janmonschke! рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рд▓рдЧрд╛рддрд╛рд░ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдерд╛ рдФрд░ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрд╛ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рдерд╛ рдФрд░ рдХреНрдпреЛрдВ rowHasChanged
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрднреА рднреА рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред рдореИрдВ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдареАрдХ рд╣реИ, рдЗрд╕рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛: http://stackoverflow.com/a/33871118ред
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╣реА рдбреЗрдЯрд╛рд╕реЛрд░реНрд╕ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕реЗ рдХреНрд▓реЛрди рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ;)
рддреЛ рдЬрд┐рд╕реНрдЯ рд╕реЗ рдХреЛрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛:
рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрдкрдХреЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдШреБрд╕ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ
DataSource
рдХреЗ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдкрд░ рдЕрдзрд┐рдХ рдЬреЛрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред