Vue学习之--------脚手架的分析、Ref属性、Props配置(2022/7/28)

简介: 这篇文章分析了Vue脚手架的结构,并详细讲解了`ref`属性和`Props`配置的基础知识、代码实现和测试效果,展示了如何在Vue组件中使用`ref`获取DOM元素或组件实例,以及如何通过`Props`传递和接收外部数据。

文章目录

  • 1、脚手架的分析
  • 2、ref属性
    • 2.1 基础知识
    • 2.2 代码实现
    • 2.3 测试效果
  • 3、Props配置
    • 3.1 基础知识
    • 3.2 代码实例
    • 3.3 测试效果

1、脚手架的分析

├── node_modules
├── public
│ ├── favicon.ico: 页签图标
│ └── index.html: 主页面
├── src
│ ├── assets: 存放静态资源
│ │ └── logo.png
│ │── component: 存放组件
│ │ └── HelloWorld.vue
│ │── App.vue: 汇总所有组件
│ │── main.js: 入口文件
├── .gitignore: git版本管制忽略的配置
├── babel.config.js: babel的配置文件
├── package.json: 应用包配置文件
├── README.md: 应用描述文件
├── package-lock.json:包版本控制文件


2、ref属性

2.1 基础知识

  1. 被用来给元素或子组件注册引用信息(id的替代者)
  2. 应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)
  3. 使用方式:
    1. 打标识:<h1 ref="xxx">.....</h1><School ref="xxx"></School>
    2. 获取:this.$refs.xxx

2.2 代码实现

友情提示:这是关键部分的代码

<template>
  <div>
    <Student ref="stu"></Student>
    <hr />
    <h1 v-text="msg" ref="title"></h1>
    <button ref="btn" @click="showInfo">展示DOM元素</button>
  </div>
</template>

<script>
//引入组件
import School from "./components/School.vue";
import Student from "./components/Student.vue";

export default {
  name: "App",
  data() {
    return {
      msg: "我是脚手架",
    };
  },
  methods: {
    showInfo() {
      console.log(this.$refs.title);//真实DOM元素
      console.log(this.$refs.btn);//真实DOM元素
      console.log(this.$refs.stu);//组件的实例对象
    },
  },
  components: {
    School,
    Student,
  },
};
</script>
AI 代码解读

2.3 测试效果

在这里插入图片描述


3、Props配置

3.1 基础知识

  1. 功能:让组件接收外部传过来的数据
  2. 传递数据:<Demo name="xxx"/>
  3. 接收数据:
    1、第一种方式(只接收):props:['name']
    2、第二种方式(限制类型):props:{name:String}.
    3、第三种方式(限制类型、限制必要性、指定默认值): props:{ name:{ type:String, //类型 required:true, //必要性 default:'老王' //默认值 } }

备注:props是只读的,Vue底层会监测你对props的修改,如果进行了修改,就会发出警告,若业务需求确实需要修改,那么请复制props的内容到data中一份,然后去修改data中的数据。

3.2 代码实例

编写一个学生的组件、数据展示动态。不再是固定写法

<template>
  <div>
    <h2>学生姓名:{
  
  { name }}</h2>
    <h2>学生性别:{
  
  { sex }}</h2>
    <h2>学生年龄:{
  
  { studentAge }}</h2>
    <button @click="modifiAge">修改学生年龄</button>
  </div>
</template>

<script>
export default {
  name: "Student",
  data() {
    return {
      studentAge: this.age,
    };
  },
  methods: {
    modifiAge() {
      this.studentAge++;
    },
  },

  //简单声明接收
  // props:['name','age','sex']

  //接收的同时对数据进行类型限制
  /* props:{
            name:String,
            age:Number,
            sex:String
        } */

  props: {
    name: {
      type: String, //name的类型是字符串
      required: true, //name是必要的
    },
    age: {
      type: Number,
      default: 99, //默认值
    },
    sex: {
      type: String,
      required: true,
    },
  },
};
</script>
AI 代码解读

<template>
  <div>
    <Student name="张三" sex="男" :age="18" />
    <hr />
  </div>
</template>

<script>
//引入组件
import School from "./components/School.vue";
import Student from "./components/Student.vue";

export default {
  name: "App",

  components: {
    School,
    Student,
  },
};
</script>
AI 代码解读

3.3 测试效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

目录
打赏
0
0
0
0
219
分享
相关文章
|
6天前
|
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
47 4
Vue实现动态数据透视表(交叉表)
Vue实现动态数据透视表(交叉表)
142 13
属性描述符初探——Vue实现数据劫持的基础
属性描述符还有很多内容可以挖掘,比如defineProperty与Proxy的区别,比如vue2与vue3实现数据劫持的方式有什么不同,实现效果有哪些差异等,这篇博文只是入门,以后有时间再深挖。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
4月前
|
vue使用iconfont图标
vue使用iconfont图标
208 1
极致的灵活度满足工程美学:用Vue Flow绘制一个完美流程图
本文介绍了使用 Vue Flow 绘制流程图的方法与技巧。Vue Flow 是一个灵活强大的工具,适合自定义复杂的流程图。文章从环境要求(Node.js v20+ 和 Vue 3.3+)、基础入门案例、自定义功能(节点与连线的定制、事件处理)到实际案例全面解析其用法。重点强调了 Vue Flow 的高度灵活性,虽然预定义内容较少,但提供了丰富的 API 支持深度定制。同时,文中还分享了关于句柄(handles)的使用方法,以及如何解决官网复杂案例无法运行的问题。最后通过对比 mermaid,总结 Vue Flow 更适合需要高度自定义和复杂需求的场景,并附带多个相关技术博客链接供进一步学习。
Vue Router 核心原理
Vue Router 是 Vue.js 的官方路由管理器,用于实现单页面应用(SPA)的路由功能。其核心原理包括路由配置、监听浏览器事件和组件渲染等。通过定义路径与组件的映射关系,Vue Router 将用户访问的路径与对应的组件关联,支持哈希和历史模式监听 URL 变化,确保页面导航时正确渲染组件。
ry-vue-flowable-xg:震撼来袭!这款基于 Vue 和 Flowable 的企业级工程项目管理项目,你绝不能错过
基于 Vue 和 Flowable 的企业级工程项目管理平台,免费开源且高度定制化。它覆盖投标管理、进度控制、财务核算等全流程需求,提供流程设计、部署、监控和任务管理等功能,适用于企业办公、生产制造、金融服务等多个场景,助力企业提升效率与竞争力。
168 12
Vue中的class和style绑定
在 Vue 中,class 和 style 绑定是基于数据驱动视图的强大功能。通过 class 绑定,可以动态更新元素的 class 属性,支持对象和数组语法,适用于普通元素和组件。style 绑定则允许以对象或数组形式动态设置内联样式,Vue 会根据数据变化自动更新 DOM。