• Vue ref & props & mixin


    ref:相当于css中的id
        1. 作用:用于给节点打标识 2. 读取方式:this.$refs.xxxxxx

    1. <template>
    2. <div>
    3. <h1 v-text="msg" ref="title"></h1>
    4. <button ref="btn" @click="showDOM">点我输出上方的DOM元素</button>
    5. <School ref="sch"/>
    6. </div>
    7. </template>
    8. <script>
    9. //引入School组件
    10. import School from './components/School'
    11. export default {
    12. name:'App',
    13. components:{School},
    14. data() {
    15. return {
    16. msg:'欢迎学习Vue!'
    17. }
    18. },
    19. methods: {
    20. showDOM(){
    21. console.log(this.$refs.title) //真实DOM元素
    22. console.log(this.$refs.btn) //真实DOM元素
    23. console.log(this.$refs.sch) //School组件的实例对象(vc)
    24. }
    25. },
    26. }
    27. </script>


    props :用于父组件给子组件传递数据
        读取方式一: 只指定名称 props: ['name', 'age', 'setName'] 
        读取方式二: 指定名称和类型 props: { name: String, age: Number, setNmae: Function } 
        读取方式三: 指定名称/类型/必要性/默认值 props: { name: {type: String, required: true, default:xxx}, }

    1. <template>
    2. <div>
    3. <h1>{{msg}}</h1>
    4. <h2>学生姓名:{{name}}</h2>
    5. <h2>学生性别:{{sex}}</h2>
    6. <h2>学生年龄:{{myAge+1}}</h2>
    7. <button @click="updateAge">尝试修改收到的年龄</button>
    8. </div>
    9. </template>
    10. <script>
    11. export default {
    12. name:'Student',
    13. data() {
    14. console.log(this)
    15. return {
    16. msg:'我是一个尚硅谷的学生',
    17. myAge:this.age
    18. }
    19. },
    20. methods: {
    21. updateAge(){
    22. this.myAge++
    23. }
    24. },
    25. //简单声明接收
    26. // props:['name','age','sex']
    27. //接收的同时对数据进行类型限制
    28. /* props:{
    29. name:String,
    30. age:Number,
    31. sex:String
    32. } */
    33. //接收的同时对数据:进行类型限制+默认值的指定+必要性的限制
    34. props:{
    35. name:{
    36. type:String, //name的类型是字符串
    37. required:true, //name是必要的
    38. },
    39. age:{
    40. type:Number,
    41. default:99 //默认值
    42. },
    43. sex:{
    44. type:String,
    45. required:true
    46. }
    47. }
    48. }
    49. </script>

    混入/ mixin

    1. 在xx.js 中声明

    minxin.js

    1. export const hunhe = {
    2. methods: {
    3. showName(){
    4. alert(this.name)
    5. }
    6. },
    7. mounted() {
    8. console.log('你好啊!')
    9. },
    10. }
    11. export const hunhe2 = {
    12. data() {
    13. return {
    14. x:100,
    15. y:200
    16. }
    17. },
    18. }

    2. main.js 中引入, 全局生效

    1. //引入Vue
    2. import Vue from 'vue'
    3. //引入App
    4. import App from './App.vue'
    5. import {hunhe,hunhe2} from './mixin'
    6. //关闭Vue的生产提示
    7. Vue.config.productionTip = false
    8. Vue.mixin(hunhe)
    9. Vue.mixin(hunhe2)
    10. //创建vm
    11. new Vue({
    12. el:'#app',
    13. render: h => h(App)
    14. })

    3. 或在vue文件中单独引入,局部生效, 

    1. <template>
    2. <div>
    3. <h2 @click="showName">学生姓名:{{name}}</h2>
    4. <h2>学生性别:{{sex}}</h2>
    5. </div>
    6. </template>
    7. <script>
    8. // import {hunhe,hunhe2} from '../mixin'
    9. export default {
    10. name:'Student',
    11. data() {
    12. return {
    13. name:'张三',
    14. sex:'男'
    15. }
    16. },
    17. // mixins:[hunhe,hunhe2]
    18. }
    19. </script>

  • 相关阅读:
    C++总结(8):STL容器适配器之stack、queue、priority_queue详解
    C#8.0本质论第七章--继承
    前三季度亏损近亿元,「缺钱」的北斗智联拟变更控股股东
    Golang语言设计模式的实现—工厂模式
    FILE 指针、标准输入、标准输出和标准错误、打开文件 fopen()、读文件和写文件
    Kotlin 常用语法糖记录
    C++语法——指针和引用
    C#为什么非要把函数叫方法?
    复杂的C++继承
    三思近10000㎡天幕屏耀显上海“八万人”体育场
  • 原文地址:https://blog.csdn.net/u010074478/article/details/125533381