Vue.js рдореЗрдВ рдкреГрд╖реНрда рдкрд░ рдЕрдВрдХ рд▓рдЧрд╛рдирд╛

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЛ рдбреЗрдиреА рд╣реЗрдбреНрд░рд┐рдХ рдХреЗ рд▓реЗрдЦ " рдкреЗрдЬреЗрд╢рди рдЗрди рд╡реАрдпреВ.рдЬреЗрдПрд╕ " рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред

рдкреЗрдЬрд┐рдиреЗрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЫреЛрдЯреЗ рдмреНрд▓реЙрдХреЛрдВ рдпрд╛ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдбреЗрдЯрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░ UX рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рддреЛ Vue.js рдШрдЯрдХ рдХреЛ рдкреГрд╖реНрдард╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЯреБрдХрдбрд╝рд╛ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдФрд░ рдлрд┐рд░ рдореИрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рджрд┐рдЦрд╛рдКрдВрдЧрд╛

рд╕рднреА рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ рдореЗрдВ рд╕реЗ, рдореБрдЭреЗ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ - рдкреГрд╖реНрда рд╕рдВрдЦреНрдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

data(){ return { pageNumber: 0 //   0 } } 

рдкреНрд░реЙрдкреНрд╕ (рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ) рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрдХрд╛рд░ рддрд░реНрдХ рднреА рд▓реВрдВрдЧрд╛ред

 props:{ listData:{ type:Array, required:true }, size:{ type:Number, required:false, default: 10 } } 

рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдореИрдВ рдкрд┐рдЫрд▓реЗ (рдкрд┐рдЫрд▓реЗ) рдФрд░ рдЕрдЧрд▓реЗ (рдЕрдЧрд▓реЗ) рдкреГрд╖реНрдареЛрдВ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛:

 methods:{ nextPage(){ this.pageNumber++; }, prevPage(){ this.pageNumber--; } } 

рдПрдХ рддреНрд╡рд░рд┐рдд рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рддрдиреЗ рдкреГрд╖реНрда рд╣реИрдВ:

 pageCount(){ let l = this.listData.length, s = this.size; //     return Math.ceil(l/s); //  // return Math.floor(l/s); } 


рдЕрдм, рдЧрдгрдирд╛ рдХреА рдЧрдИ рдкрдЧрдбрдВрдЯрд┐рдбреЗрдЯрд╛ рд╕рдВрдкрддреНрддрд┐ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рдВрдпреБрдХреНрдд рд╣реИред рдпрд╣ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

 paginatedData(){ const start = this.pageNumber * this.size, end = start + this.size; return this.listData.slice(start, end); } 

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

рдФрд░ рд╣рдорд╛рд░рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ

 <div> <ul> <li v-for="p in paginatedData"> {{p.first}} {{p.last}} {{p.suffix}} </li> </ul> <button @click="prevPage"> Previous </button> <button @click="nextPage"> Next </button> </div> 

рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдмрдЯрди рддрдм рдХрд╛рдо рдХрд░реЗрдВ рдЬрдм рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдХрд░рдирд╛ рд╣реЛред рдкреНрд░рдмрд▓ рдмрдЯрди рдХреЗ рд▓рд┐рдП , рдореИрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ :
: рдЕрдХреНрд╖рдо = "рдкреЗрдЬрдирдВрдмрд░ == 0"
рдФрд░ рдЕрдЧрд▓реЗ рдкреЗрдЬ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдореИрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ :
: рдЕрдХреНрд╖рдо = "рдкреЗрдЬрдирдВрдмрд░> = рдкреЗрдЬрдХрд╛рдЙрдВрдЯ -1"
рдореЗрд░реЗ рдШрдЯрдХ рдХрд╛ рдХрд╛рд░реНрдпрд╢реАрд▓ рдбреЗрдореЛ:


рдХрднреА-рдХрднреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХрдо рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреГрд╖реНрдард╛рдВрдХрди рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрд┐рдирд╛ рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдбреЗрдиреА рд╣реЗрдбреНрд░рд┐рдХ рдПрдХ рдпреВрдПрд╕рдПрдлрд╝ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рд╣реИ рдЬреЛ рдЕрдкрдиреА рдиреМрдХрд░реА рд╕реЗ рдмрд╣реБрдд рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдФрд░ Vue.js рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рд╡рд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдХрднреА-рдХрднреА рдмреНрд▓реЙрдЧ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЯреНрд╡рд┐рдЯрд░ рдкрд░ @dennythecoder рдкрд░ рдЙрд╕рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi417119/


All Articles