vue计算属性(面试必问)

本文详细介绍了Vue.js中计算属性的使用方法,包括将其写在computed中、作为函数形式以及其实质是一个属性。强调了计算属性的特性:必须有返回值、名字不能与data中的数据重复、依赖data值、响应式更新和缓存机制。计算属性适用于根据已有数据生成新值和动态计算场景。在示例中,展示了如何计算总价和平均价,用于展示商品总价和平均价格。

1、如何使用

1.1写在computed里面

1.2写起来像一个函数

1.3其实是一个属性

2、特点:

2.1计算属性必须有返回值

2.2计算属性的名字不能和data数据的名字重复

2.3计算属性可以使用data中的值

2.4计算属性的值只随着依赖值的属性变化而变化

2.5计算属性有缓存

3、计算属性的使用场景

3.1根据已知值得到一个新值

3.2新值跟着已知值(依赖值)的变化而变化

4、计算属性 在案例中的应用

<td colspan="2">总价钱为: {{ totalPrice }}</td>
<td colspan="2">平均价: {{ avgPrice }}</td>

  computed: {
    totalPrice() {
      let total = 0;
      //forEach遍历数据
      this.list.forEach((v) => {
        total += v.price;
      });
      return total;
    },
    avgPrice() {
    //().toFixed(2)保留两位小数
      return (this.totalPrice / this.list.length).toFixed(2);
    },
  },

 

 

### 常见的 Vue 面试题目及答案 #### 1. Vue 是什么? Vue.js 是一种用于构建用户界面的渐进式框架。与其他重量级框架同的是,Vue 提供了一个更加灵活且易于集成的方式,可以逐步采用其特性来增强现有项目[^1]。 #### 2. Vue 的生命周期钩子有哪些? Vue 实例经历一系列初始化过程,在这个过程中会触发多个生命周期钩子函数,允许开发者在特定阶段执行自定义逻辑。主要的生命周期钩子包括但限于 `beforeCreate`, `created`, `beforeMount`, `mounted`, `beforeUpdate`, `updated`, `beforeDestroy` 和 `destroyed` 等。 #### 3. Vue 组件中 `data` 为什么须是一个函数? 当组件被多次实例化时,如果 `data` 是函数而直接返回对象,则这些实例将会共享同一个数据源,这可能导致意外的状态冲突。通过让 `data` 成为一个返回新对象的工厂函数,每次创建新的组件实例都会获得独立的数据副本。 #### 4. 计算属性(computed)和侦听器(watch)的区别 - **计算属性**:适合依赖其他响应式属性并自动更新的情况。它们具有缓存机制,只有在其所依赖的数据发生变化时才会重新求值。 - **侦听器**:更适合处理更复杂的业务逻辑或需要对某个具体变化做出反应的情形。每当指定的目标发生变动就会立即触发相应的回调方法。 #### 5. 关键指令的作用 - `v-model`: 实现表单输入与应用状态之间的双向数据绑定; - `v-for`: 对列表项进行迭代渲染; - `v-if / v-show`: 控制元素显示与否,其中前者会在 DOM 中完全移除/添加节点,后者仅修改样式中的 display 属性; - `v-on`: 添加事件监听器; - `v-once`: 表明该元素及其子元素只应渲染一次[^2]。 #### 6. 使用 `v-if` 还是 `v-show` 来控制可见性? 对于经常更改条件的内容推荐使用 `v-if`,因为这样可以在首次满足条件前避免要的渲染开销;而对于那些可能频繁切换显示状态的部分则更适合选用 `v-show`,因为它仅仅是在 CSS 上操作而涉及虚拟DOM的操作成本[^3]。 #### 7. 在哪个生命周期内调用异步请求? 通常情况下应该选择在 `created()` 或者 `mounted()` 生命周期钩子里发起网络请求获取远程资源。这两个时机的选择取决于具体的业务需求以及页面加载顺序等因素考虑。 ```javascript // 示例代码展示如何在一个组件挂载完成后发送HTTP GET 请求 export default { mounted() { axios.get('/api/data') .then(response => this.items = response.data); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值