面试题答案
一键面试判断哪些属性可设为静态属性以优化性能
- 不随组件状态变化的属性:如果一个属性的值在组件整个生命周期内都不会因为组件内部状态的改变而改变,那么它适合设为静态属性。例如,一个展示用户信息的组件,用户的头像URL在组件渲染后不会再变化,这个URL就可设为静态属性。
- 不依赖于其他动态值的属性:若属性值不依赖于组件内其他会变化的数据,可设为静态。比如一个按钮组件,按钮的文本是固定的 “提交”,不依赖于任何组件内部动态变化的数据,此文本属性可设为静态。
简单计数器组件中适合的静态属性举例
假设我们有一个简单的计数器组件,其目的是展示一个数字并可以通过按钮增加或减少这个数字。
<script>
let count = 0;
const increment = () => count++;
const decrement = () => count--;
</script>
<button on:click={decrement}>-</button>
<span>{count}</span>
<button on:click={increment}>+</button>
在这个计数器组件中,如果我们要添加一些属性,例如计数器的初始值,假设这个初始值在组件创建后就不再改变,那么这个初始值属性就适合设为静态属性。如下:
<script>
export let initialCount = 0;
let count = initialCount;
const increment = () => count++;
const decrement = () => count--;
</script>
<button on:click={decrement}>-</button>
<span>{count}</span>
<button on:click={increment}>+</button>
这里的 initialCount
就是适合设为静态属性的例子,因为它在组件渲染后不会因为计数器自身的增减操作而改变。