Оё дар вақти таъин кардани чандирии арзишҳо дар data, дубора рендер мешавад?
sobes.tech AI
Ҷавоб аз AI
Бале, мешавад. Ҳатто дар ҳар як таъин кардан нест.
Vue системаи реактивиро истифода мекунад. Вақте ки шумо арзиши нав ба хусусияти реактивӣ дар data таъин мекунед, Vue ин тағиротро пайгирӣ мекунад.
Табдилоти пайдарпай дар як блоки код (масалан, дар ҳангоми коркарди ҳодиса ё hook-и давраҳои ҳаёт) одатан ба як навсозии нақшакашӣ (навсозии дубора) оварда мерасонад. Vue ин тағиротҳоро буфер мекунад ва онҳоро асинхронан дар "tick"-и ояндаи давраи навсозӣ татбиқ мекунад, то аз навсозии зиёдатӣ пешгирӣ кунад.
Масалан:
// Компоненти Vue
export default {
data() {
return {
count: 0,
message: 'Салом'
};
},
methods: {
updateData() {
// Ду таъиноти пайдарпай
this.count = this.count + 1;
this.message = 'Навсозӣ: ' + this.count;
// Vue дар ин ҷо *як* навсозии DOM-ро нақша мекунад
}
}
}
Дар ин мисол, ҳарду тағирот (this.count ва this.message) дар маълумоти реактивӣ рух медиҳанд, аммо Vue танҳо як бор пас аз анҷоми иҷрои updateData (ё, дақиқтар, дар "tick"-и оянда) дубора навсозӣ мекунад.
Аммо, агар шумо таъинотҳоро дар контекстҳои гуногуни асинхронӣ (масалан, дар setTimeout ё промисҳо) иҷро кунед, ҳар як тағирот эҳтимолан метавонад сабаби навсозии алоҳида гардад.
Бинобар ин, дар ҳолати "мулоқотҳои зиёди таъиноти арзишҳо дар data" дар дохили як блоки синхронӣ, эҳтимолан Vue як бор навсозӣ мекунад, ки ҳамаи тағиротҳоро инъикос мекунад. Аммо, худи воқеият, ки шумо маълумоти реактивиро тағир медиҳед, ҳамеша ба нақша гирифтани навсозиро ба вуҷуд меорад, ки дар ниҳояти кор ба навсозии DOM оварда мерасонад.