Sobes.tech
Middle

Կա՞ր է կրկնակի ռենդեր՝ տվյալների մեջ մի քանի արժեքներ հերթականորեն նշանակելիս։

sobes.tech AI

Պատասխան AI-ից

Այո, կլինի։ Հիշեք, որ դա տեղի կունենա ոչ ամեն անգամ նշանակման ժամանակ։

Vue-ն օգտագործում է ռեակտիվ համակարգ։ Երբ դուք նշանակում եք նոր արժեք ռեակտիվ հատկությանը data-ում, Vue-ն հետևում է այդ փոփոխությանը։

Կատարած փոփոխությունները նույն կոդի բլոկում (օրինակ, իրադարձության handler կամ կյանքի ցիկլի hook-ի ներսում) սովորաբար հանգեցնում են մի պլանավորված թարմացման (վերաներկայացում)։ Vue-ն բուֆերային է պահում այդ փոփոխությունները և դրանք կիրառում է ասինխրոնորեն հաջորդ "tick"-ում՝ թարմացման ցիկլի, որպեսզի խուսափի ավելորդ վերաներկայացումներից։

Օրինակ՝

// Vue կոմպոնենտ
export default {
  data() {
    return {
      count: 0,
      message: 'Բարև'
    };
  },
  methods: {
    updateData() {
      // Երկու հաջորդական նշանակումներ
      this.count = this.count + 1;
      this.message = 'Թարմացվել է՝ ' + this.count;
      // Vue այստեղ պլանավորելու է *մի* DOM վերաներկայացում հաջորդ "tick"-ում
    }
  }
}

Այս օրինակով, երկու փոփոխություններն էլ (this.count և this.message) տեղի կունենան ռեակտիվ տվյալներում, բայց Vue-ն միայն մեկ անգամ կկատարի վերաներկայացում updateData-ի ավարտից հետո (կամ, ավելի ճշգրիտ, հաջորդ "tick"-ում):

Սակայն, եթե դուք կատարեք նշանակումներ տարբեր ասինխրոն կոնտեքստներում (օրինակ՝ տարբեր setTimeout-ներում կամ խոստումներում), յուրաքանչյուր այդ փոփոխությունը կարող է հնարավոր է՝ հանգեցնել առանձին վերաներկայացման։

Ուստի, երբ "մի շարք տվյալների նշանակումներ` հաջորդաբար" կատարվում է նույն սինխրոն բլոկում, Vue-ն հավանական է, որ կկատարի մի վերաներկայացում, որը կարտացոլի բոլոր փոփոխությունները։ Բայց այն փաստը, որ դուք փոփոխում եք ռեակտիվ տվյալները, միշտ հանգեցնում է թարմացման պլանավորման, որը վերջում կհանգեցնի DOM-ի վերաներկայացման։