iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue中的 ref,props,mixin属性
  • 786
分享到

Vue中的 ref,props,mixin属性

2024-04-02 19:04:59 786人浏览 安东尼
摘要

目录refprops$attrsmixinref ref 属性: 1.被用来给元素或子组件注册引用信息((id的替代者)2.应用在html标签上获取的是真实DOM元素,应用在组件标签

ref

ref 属性:

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

为了说明这个属性,我们重新写下相关代码:

main.js

//引入Vue
import Vue from 'vue';
//引入App
import App from './App';
//关闭vue的生产提示
Vue.config.productionTip = false
//创建vm
new Vue({
    el: "#app",
    render: h => h(App)
})

School.vue

<template>
  <div class="school">
    <h2>学校名称:{{ name }}</h2>
    <h2>学校地址:{{ address }}</h2>
  </div>
</template>

<script>
export default {
  name: "School",
  data() {
    return {
      name: "三里屯小学",
      address: "北京"
    }
  }
}
</script>

<style scoped>
.school {
  background-color: aliceblue;
}
</style>

App.vue

<template>
  <div>
    <h2 ref="title">欢迎学习Vue</h2>
    <button @click="showDom" ref="btn">点我输出上方dom</button>
    <School ref="sch"/>
  </div>
</template>

<script>
//引入School组件
import School from "@/components/School";

export default {
  name: "App",
  components: {
    School
  },
  methods:{
    showDom(){
      console.log(this.$refs);
      console.log(this.$refs.title);//真实Dom元素
      console.log(this.$refs.sch);//School组件的实例对象
    }
  }
}
</script>

<style scoped>
</style>

props

功能:让组件接收外部传过来的数据

  • (1).传递数据: <Demo name="xxx" /> 
  • (2).接收数据:

第一种方式(只接收):

props: [ 'name']

第二种方式(限制类型):

props:{
	name : Number
}

第三种方式(限制类型、限制必要性、指定默认值):

props:{
	name:{
		type:String,//类型
		required:true,//必要性
		default:'老王'//默认值
	}
}

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

使用介绍 Student.vue

<template>
  <div>
    <h1>{{msg}}</h1>
    <h2>学生姓名:{{ name }}</h2>
    <h2>学生性别:{{ sex }}</h2>
    <h2>学生年龄:{{ age }}</h2>
  </div>
</template>

<script>
export default {
  name: "Student",
  data() {
    return {
      msg:"学生信息",
    }
  },
  //简单声明接受
  props:["name", "sex", "age"]
}
</script>

<style scoped>
</style>

App.vue

<template>
  <div>
    <Student name="张三" sex="男" :age="18+1"/>
    <Student name="王老五" sex="男" age="19"/>
  </div>
</template>

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

export default {
  name: "App",
  components: {
    Student
  }
}
</script>
<style scoped>
</style>

在接受时,还可以进行类型限制

 //接受的同时进行类型限制
  props:{
    name:String,
    age:Number,
    sex:String
  }

这样在使用的时候,年龄只能传数值类型

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

或者写的更具体

//接收的同时对数据:类型限制+默认值指定+必要性限制
  props: {
    name: {
      type: String,//类型String
      required: true//必须传值
    },
    age: {
      type: Number,
      default: 99//默认99
    },
    sex: {
      type: String,
      required: true
    }

注意:传过来的值不能改变,如需改变,需要本地定义一个值

<template>
  <div>
    <h1>{{ msg }}</h1>
    <h2>学生姓名:{{ name }}</h2>
    <h2>学生性别:{{ sex }}</h2>
    <h2>学生年龄:{{ myAge }}</h2>
    <button @click="updateAge">点我修改传进来的年龄</button>
  </div>
</template>
<script>
export default {
  name: "Student",
  props: ["name", "sex", "age"],
  data() {
    return {
      msg: "学生信息",
      myAge: this.age
    }
  },
  methods: {
    updateAge() {
      console.log(this.myAge++);
    }
  }
}
</script>
<style scoped>
</style>

$attrs

App.vue 中引入并使用 Demo 组件,并向其传入一个 msg,值为 “hello ”

<template>
  <div>
    <Demo msg="hello"/>
  </div>
</template>
<script>
import Demo from './components/Demo'
export default {
  name: 'App',
  components: {
    Demo
  }
}
</script>

Demo 组件在 props 中接收,我们在 mounted 生命钩子中打印下 this

<template>
  <div>
    {{ msg }}
  </div>
</template>
<script>
export default {
  name: "Demo",
  props: ["msg"],
  mounted() {
    console.log(this);
  }
}
</script>

可以看到 vc 身上的 props 有刚才传过来的值 

如果 Demo 中不使用 props 接收,也可以使用

<template>
  <div>
    {{ $attrs.msg }}
  </div>
</template>
<script>
export default {
  name: "Demo",

  mounted() {
    console.log(this);
  }
}
</script>

可以看到 vc 的 $attrs 上有刚才传过来的 msg,所以也可以使用 $attrs.msg使用传过来的值

mixin

功能:可以把多个组件共用的配置提取成一个混入对象 使用方式: 第一步、定义混合

{
	data(){....},
	methods:{....}
}

第二步、使用混入

  • (1).全局混入:Vue.mixin(xxx)
  • (2).局部混入:mixins: [ "xxx "]

Student.vue

<template>
  <div>
    <h2 @click="alertName">学生姓名:{{ name }}</h2>
    <h2>学生性别:{{ sex }}</h2>
    <h2>{{ x }}</h2>
    <h2>{{ y }}</h2>
  </div>
</template>
<script>
//引入混合
import {mixin,mixin2} from "@/mixin";
export default {
  name: "Student",
  data() {
    return {
      name: "张三",
      sex: "男",
      x:300
    }
  },
  mounted() {
    console.log("hello mounted");
  },
  mixins: [mixin,mixin2]
}
</script>
<style scoped>
</style>

School.vue

<template>
  <div>
    <h2 @click="alertName">学校名称:{{ name }}</h2>
    <h2>学生地址:{{ address }}</h2>
  </div>
</template>
<script>
import {mixin} from "@/mixin";
export default {
  name: "School",
  data() {
    return {
      name: "三里屯大学",
      address: "北京"
    }
  },
  mixins: [mixin]
}
</script>
<style scoped>
</style>

App.vue

<template>
  <div>
    <Student/>
    <hr/>
    <School/>
  </div>
</template>
<script>
//引入School组件
import Student from "@/components/Student";
import School from "@/components/School";
export default {
  name: "App",
  components: {
    Student,
    School
  }
}
</script>
<style scoped>
</style>

新建 mixin.js

export const mixin = {
    methods: {
        alertName() {
            alert(this.name)
        }
    },
    mounted() {
        console.log("你好,mounted");
    }
}

export const mixin2 = {
    data() {
        return {
            x: 100,
            y: 200
        }
    }
}

以上是局部引入mixin,下面介绍全局引入 mixin,修改 main.js

//引入Vue
import Vue from 'vue';
//引入App
import App from './App';
import {mixin,mixin2} from "@/mixin";
//关闭vue的生产提示
Vue.config.productionTip = false
Vue.mixin(mixin)
Vue.mixin(mixin2)
//创建vm
new Vue({
    el: "#app",
    render: h => h(App)
})

到此这篇关于Vue中的 ref,props,mixin属性的文章就介绍到这了,更多相关Vue 属性内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue中的 ref,props,mixin属性

本文链接: https://www.lsjlt.com/news/149893.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue中的 ref,props,mixin属性
    目录refprops$attrsmixinref ref 属性: 1.被用来给元素或子组件注册引用信息((id的替代者)2.应用在html标签上获取的是真实DOM元素,应用在组件标签...
    99+
    2024-04-02
  • Vue组件化(ref,props, mixin,.插件)详解
    目录1、ref属性2、props配置项props总结3、mixin混入3.1、局部混入3.2、全局混入mixin混入总结4、插件插件总结1、ref属性 被用来给元素或子组件注册引用信...
    99+
    2024-04-02
  • Vue组件化ref,props, mixin怎么使用
    这篇文章主要介绍“Vue组件化ref,props, mixin怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue组件化ref,props, mixin怎么使用”文章能帮...
    99+
    2023-06-30
  • 如何理解Vue中的ref属性
    这期内容当中小编将会给大家带来有关如何理解Vue中的ref属性,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。上述就是小编为大家分享的如何理解Vue中的ref属性了,如果刚好有类似的疑惑,不妨参照上述分析进...
    99+
    2023-06-25
  • Vue之ref属性详解
    总结 本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容! ...
    99+
    2024-04-02
  • vue中组件的props属性有什么用
    这篇文章主要介绍vue中组件的props属性有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!问题一:那props具体是怎么使用呢?原理又是什么呢?往下看1、【定义被调用组件】首先,我们先定义一个person组件...
    99+
    2023-06-25
  • 详细聊聊vue中组件的props属性
    目录问题一:那props具体是怎么使用呢?原理又是什么呢?往下看问题二:那如果我们想给年龄加1岁,怎么实现?问题三:对于年龄这一类型,我们最希望拿到的是什么数据类型?问题四:可以限制...
    99+
    2024-04-02
  • Vue子组件更新props中的属性值问题
    目录Vue子组件更新props的属性值.sync属性v-model应用Vue子组件中修改Props的几种情况针对以上几种情况再逐一进行分析结果展示结论Vue子组件更新props的属性...
    99+
    2022-11-13
    Vue子组件 更新props属性值 Vue props属性值
  • vue属性props默认类型怎么写
    这篇“vue属性props默认类型怎么写”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue属性props默认类型怎么写”文...
    99+
    2023-06-30
  • vue属性props默认类型的写法介绍
    目录vue属性props默认类型props自定义属性vue属性props默认类型 Vue.component('my-component', { props: { // ...
    99+
    2024-04-02
  • React中ref属性的示例分析
    这篇文章主要介绍了React中ref属性的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。概述首先,Refs 和 ref 是两个概念,Refs 是 React 提供的可...
    99+
    2023-06-15
  • vue ref怎么获取子组件属性值
    本篇内容介绍了“vue ref怎么获取子组件属性值”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ref获取子组件属性值父引入、注册...
    99+
    2023-06-29
  • VUE3的Non-Props属性怎么用
    本篇内容介绍了“VUE3的Non-Props属性怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 概述墨菲定律告诉我们:人总是容易犯...
    99+
    2023-06-28
  • Vue中ref特性的使用示例
    这篇文章主要介绍了Vue中ref特性的使用示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、ref的基本使用ref的使用<!--&...
    99+
    2024-04-02
  • vue组件属性(props)及私有数据data解析
    目录props1、组件Comp1.vue2、使用了Comp1的页面3、运行结果data子组件中data和props的区别vue组件中,props是公有属性,主要对外,相当于类里面的g...
    99+
    2022-11-13
    vue组件属性 vue props vue私有数据data
  • Vue中ref特性如何使用
    这篇文章主要介绍“Vue中ref特性如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue中ref特性如何使用”文章能帮助大家解决问题。一、ref的基本使用ref的使用<!-- ...
    99+
    2023-07-04
  • vue子组件如何获取父组件的内容(props属性)
    目录子组件如何获取父组件的内容props属性vue父→子组件的props传值需求1需求2子组件如何获取父组件的内容 props属性 组件实例的作用域是孤立的。这意味着不能并...
    99+
    2024-04-02
  • vue组件props属性监听不到值变化问题
    目录props属性监听不到值变化问题props监听变化的几种方式应用场景1.computed 计算属性2.methods 方法3.watch 侦听器props属性监听不到值变化问题 ...
    99+
    2024-04-02
  • React中的ref属性的使用示例详解
    目录ref 简介1. 字符串形式的ref2. create形式的ref3. 回调函数形式的ref总结:ref 简介 React提供的这个ref属性,表示为对组件真正实例的引用,其实就...
    99+
    2023-05-17
    React ref属性使用 React ref属性
  • VUE3之Non-Props属性的具体使用
    目录1. 概述2.Non-Props 属性2.1 初识Non-Props 属性2.2 不想把Non-Props 属性 渲染到最外层标签2.3Non-Props 属性的使用场景2.4 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作