首页 > 解决方案 > 指定一个我可能不会在 Vue.js 的动态组件中使用的值会降低性能吗?

问题描述

在我的应用程序中,我有 10 个组件,所有这些组件都需要一个名为andamento;的属性。但只有一个子集需要一个名为custas.

如果我custas为(下)中的所有组件andamentosOrdenado设置属性,与仅为子集设置属性相比,我会失去性能吗?

这是我的代码:

<v-timeline-item class="mb-3" small v-for="andamento in andamentosOrdenado" :key="andamento.nome">
  <component v-bind:is="andamento.form" :andamento="andamento" :custas="notificacao.custas"></component>
</v-timeline-item>

标签: javascriptvue.js

解决方案


如果 的值为custas静态/常量:

不,因为你不能因为不使用常量值/变量而“失去”性能,这是因为属性已经定义并且它的值已经被评估(一个不需要再次发生的过程)。

如果 的值custas不是静态/常量:

那么是的,因为您正在使机器浪费资源来评估您很可能不会使用的非静态值。更不用说这个值可能会改变,这意味着它的值将被重新评估(无缘无故)。

此问题的另一种解决方案是使用if语句custas有条件地定义属性,例如:

// pseudo code:
if (i_need_custas) {
  my_object.custas = fn_that_returns_value_that_might_change();
}

然后,您需要在哪里使用custas

// pseudo code:
if (my_object.hasOwnProperty("custas")) {
  // do stuff with custas
}

祝你好运。


推荐阅读