Влияет ли определение переменных внутри вычисляемого свойства на производительность компонентов Vue?
Справочная информация: я создал компонент таблицы, который генерирует таблицу HTML в целом из переданных данных и имеет разные фильтры для каждого столбца, фильтр для всей таблицы, ключи сортировки и т. д., поэтому я определяю много локальных переменных внутри вычисляемого свойства.
Представьте, что у вас есть массив объектов:
let data = [
{ id: "y", a: 1, b: 2, c: 3 },
{ id: "z", a: 11, b: 22, c: 33 }
]
..который используется компонентом Vue для отображения данных:
<template>
<div>
<input type="text" v-model="filterKey" />
</div>
<table>
<thead>
<tr>
<th>A</th>
<th>B</th>
<th>C</th>
</tr>
</thead>
<tbody>
<tr v-for="item in filteredData" :key="item.id">
<td v-for="(value, key) in item" :key="key">
{{ value }}
</td>
</tr>
</tbody>
</table>
</template>
Данные фильтруются через ввод:
<script>
export default {
props: {
passedData: Array,
},
data() {
return {
filterKey: null,
};
},
computed: {
filteredData() {
// defining local scope variables
let data = this.passedData;
let filterKey = this.filterKey;
data = data.filter((e) => {
// filter by filterKey or this.filterKey
});
return data;
},
},
};
</script>
Мой вопрос относится к let data = ..
и let filterKey = ..
, поскольку filteredData()
запускается при любом изменении filterKey
(определенного в data()
), поэтому локальная переменная тоже обновляется, хотя они не реагируют на Vue.
Есть ли какое-либо влияние на производительность при определении локальных переменных внутри вычисляемого свойства? Следует ли использовать реактивные переменные из data()
(например, this.filterKey
) непосредственно внутри вычисляемого свойства?