Open LastPoem opened 4 years ago
v-show 则简单的多,不管初始条件是什么,元素总是会被渲染,并且只是简单地基于CSS的display属性进行切换。
显然v-if 的频繁切换性能较差,而v-show 的频繁切换性能较好。所以,v-if 适用于在运行时很少改变条件,不需要频繁切换条件的场景,v-show 则适用于频繁切换条件的场景。
watch:更多的是观察的作用,类似于某些数据的监听回调,每当监听的数据变化时都会执行回调进行后续操作。
当需要进行数值计算并且依赖于其它数据时,应该使用computed,因为可以利用computed的缓存特性,避免每次获取值时,都要重新计算。而需要在数据变化时执行异步或开销较大的操作时,应该使用watch。
v-for 遍历时避免使用v-if。因为v-for 比 v-if 优先级高,如果每一次都要遍历整个数组,会影响速度。
export default { data: () => ({ users: {} }), async created() { const users = await axios.get("/api/users"); this.users = Object.freeze(users); } };
同时需要说明,这里只是冻结了users的值,引用不会被冻结,当我们需要reactive数据的时候,我们可以重新给users赋值。
methods: { handelClick() { const newArr = [7, 8, 9, 10]; this.users = newArr; } }
Vue代码层面的优化
v-show 则简单的多,不管初始条件是什么,元素总是会被渲染,并且只是简单地基于CSS的display属性进行切换。
显然v-if 的频繁切换性能较差,而v-show 的频繁切换性能较好。所以,v-if 适用于在运行时很少改变条件,不需要频繁切换条件的场景,v-show 则适用于频繁切换条件的场景。
watch:更多的是观察的作用,类似于某些数据的监听回调,每当监听的数据变化时都会执行回调进行后续操作。
当需要进行数值计算并且依赖于其它数据时,应该使用computed,因为可以利用computed的缓存特性,避免每次获取值时,都要重新计算。而需要在数据变化时执行异步或开销较大的操作时,应该使用watch。
v-for 遍历时避免使用v-if。因为v-for 比 v-if 优先级高,如果每一次都要遍历整个数组,会影响速度。
同时需要说明,这里只是冻结了users的值,引用不会被冻结,当我们需要reactive数据的时候,我们可以重新给users赋值。