vue题目

一、基础题(组件基础 + 父子通讯)

题目 1:父子组件数据传递

  1. 创建一个父组件 Father.vue,内部包含一个子组件 Son.vue
  2. 父组件 data 中定义:message: '我是父组件的数据',通过 props 传递给子组件。
  3. 子组件接收 message 并在页面上显示,同时给 message 设置类型校验和默认值 '默认消息'
  4. 给父子组件分别设置不同的背景色,便于区分结构。

题目 2:子向父传递事件

  1. Son.vue 中添加一个按钮,点击时触发 sendMsg 方法。
  2. sendMsg 方法通过 $emit 向父组件发送一个事件 send-event,并携带参数 '子组件发来的消息'
  3. 父组件监听 send-event 事件,接收参数并将其赋值给 receivedMsg,最后在页面显示 收到的消息:xxx

二、进阶题(Axios 请求 + 跨组件数据共享)

题目 3:全局挂载 Axios 并请求数据

  1. main.js 中引入 axios,并将其挂载到 Vue.prototype 上,命名为 $axios

  2. 创建一个新组件 DataList.vue,在 created 生命周期中使用 this.$axios.get 请求以下模拟接口地址:

    plaintext

    复制代码
    https://jsonplaceholder.typicode.com/users
  3. 将请求返回的用户列表数据存储到组件的 userList 中。

  4. 在页面上循环渲染用户列表,只显示 idnameemail 三个字段。

  5. 处理请求异常,在 catch 中打印错误信息。

javascript 复制代码
<template>
  <div class="data-list">
    <h2>用户列表</h2>
    <div v-for="user in userList" :key="user.id" class="item">
      <p>编号:{{ user.id }}</p>
      <p>姓名:{{ user.name }}</p>
      <p>邮箱:{{ user.email }}</p>
    </div>
  </div>
</template>

<script>
export default {
  name: "DataList",
  data() {
    return {
      userList: [] // 存放用户列表
    };
  },
  created() {
    // 生命周期:组件创建后立即请求数据
    this.getData();
  },
  methods: {
    async getData() {
      try {
        // 使用全局挂载的 $axios
        let res = await this.$axios.get(
          "https://jsonplaceholder.typicode.com/users"
        );
        this.userList = res.data;
        console.log("请求成功", this.userList);
      } catch (err) {
        // 异常处理
        console.log("请求失败", err);
      }
    }
  }
};
</script>

<style scoped>
.data-list {
  padding: 20px;
}
.item {
  border: 1px solid #eee;
  margin: 10px 0;
  padding: 10px;
}
</style>

题目 4:祖孙组件通讯(Provide/Inject)

  1. 在最顶层 App.vue 中定义 provide,提供一个对象 { appName: '我的Vue练习项目', version: '1.0' }
  2. 创建一个深层子组件 GrandChild.vue,通过 inject 接收 appNameversion
  3. GrandChild 页面中显示:当前项目:{appName},版本:{version}

三、综合题(完整业务流程)

题目 5:Todo 列表小应用

实现一个迷你 Todo 记事本,包含以下功能:

  1. 组件拆分
    • TodoInput.vue:输入框 + 添加按钮,负责输入新任务。
    • TodoList.vue:展示任务列表,包含删除单个任务的功能。
    • TodoFooter.vue:显示总任务数和 "清空所有" 按钮。
  2. 数据管理
    • App.vue 中统一管理 todoList 数组(初始可从 /todos 接口获取,或本地模拟)。
    • 通过 propstodoList 传给 TodoListTodoFooter
  3. 事件通讯
    • TodoInput 点击添加时,通过 $emit 通知 App 新增一条任务。
    • TodoList 点击删除时,通过 $emit 通知 App 删除对应 id 的任务。
    • TodoFooter 点击清空时,通过 $emit 通知 App 清空 todoList
  4. 接口请求
    • 页面加载时,App 组件通过 $axios.get('https://jsonplaceholder.typicode.com/todos') 获取初始数据。
    • 只展示 userId=1 的前 5 条数据。
相关推荐
okra-2 小时前
什么是接口?
服务器·前端·网络
humors2212 小时前
Deepseek工具:H5+Vue 项目转微信小程序报告生成工具
前端·vue.js·微信小程序·h5·工具·报告
方安乐2 小时前
ESLint代码规范(二)
前端·javascript·代码规范
zzginfo2 小时前
var、let、const、无申明 四种变量在赋值前,使用的情况
开发语言·前端·javascript
贺小涛2 小时前
Vue介绍
前端·javascript·vue.js
cch89183 小时前
React Hooks的支持
前端·javascript·react.js
ofoxcoding3 小时前
React 性能优化实战:我把一个卡成 PPT 的页面优化到丝滑的全过程
javascript·react.js·ai·性能优化
鹏程十八少3 小时前
9. Android Shadow插件化如何解决资源冲突问题和实现tinker热修复资源(源码分析4)
android·前端·面试