Vue.js---ref、props、mixin配置项

ref 配置项:

        在原生 js 中,我们往往需要获得 DOM 元素以进行操作,通常采用 document.queryseleter()等方式获取 DOM。但在 Vue 中,我们要避免直接操作 DOM ,所以引入了 ref 这一属性。

基本语法:

<h1 ref="title">Test</h1>

        在 VueComponent 的实例化对象中有一个 $refs 属性,该属性储存了所有带有 ref 属性的 DOM。而组件内方法的 this 即为当前实例化对象,所以我们可以通过 this.$refs.xxx 来获取 ref 值为 xxx 的 DOM 节点(真实DOM),并调用其属性、方法。

props配置项:

        在编写组件结构时,一般使用插值语法使用 data 中的属性

  <div>
      <h1>{{msg}}</h1>
      <h3>name:{{name}}</h3>
      <h3>sex:{{sex}}</h3>
      <h3>age:{{age}}</h3>
  </div>

        但可能存在同一组件被多次实例化的情况,而它们的数据有可能不一样,此时就需要运用到props传递数据。

        数据需要传递到其父组件的组件标签中,注意数据命名需要一一对应。

      <Student name="lisi" sex="female" age="19"/>
      <Student name="wangwu" sex="male" :age="20"/>

        再在当前组件配置 props 配置项,有三种方式配置:

法一:
props:['name','sex','age']

法二:
props:{
    name:String,
    age:Number,
    sex:String
}

法三:
    props:{
        name:{
            type:String,
            required:true //必须传递该参数
        },
        age:{
            type:Number,
            default:99 //默认值
        },name:{
            type:String,
            required:true
        }
    }

        方法1:简单接收,用一个数组储存需要接收参数的属性名。

        方法2:接收同时对数据类型进行约束,若传入的数据不符合其约束值,则会报错,但不会自动进行类型转换!

        方法3:每个属性名配置为一个对象,对象内含有多个属性。

  •         type:传入参数的数据类型
  •         required:是否必须传递该参数(不传递会报错)
  •         default:该参数的默认值(不传递该参数时使用)

注意事项:

        传递过来的参数原则上不允许修改,否则会报错(但修改会生效)。最好的解决方法是复制一份到 data 中,注意不要重复命名。data 中的数据可以修改。

mixin配置项:

        在不同的组件中,常常会用到作用一样的方法/属性,而 mixin 配置项则可以实现对这些方法的复用,让多个组件使用同一个方法/属性。

        首先需要在一个 js 文件中编写需要的方法、属性等。注意要 export 对象。

export const mixin = {
    methods: {
        showName() {
            alert(this.name)
        }
    },
    data: {

    }
}

        在需要的组件下引入该 js 文件,并配置 mixins 属性。

import {mixin} from '../mixin'
export default {
    name:'School',
    data(){
        return {
            name:'baciii',
            address:'sztu'
        }
    },
    mixins:[mixin]
}

        这样,引入了该 js 文件的组件就可以使用文件中的属性、方法等。

全局引入:

        我们还可以在 main.js 文件中引入该 js 文件得到全局引入的效果,所有 Vue 实例,VueComponent 实例都可以使用该文件中的属性、方法。

import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false;
import { mixin } from './mixin'
Vue.mixin(mixin)
new Vue({
    el: '#app',
    render: h => h(App)
})

注意事项:

  •         若存在同名方法、属性,则以组件中 data 配置项中的为准
  •         生命周期函数,组件、mixin 中的都运行,且先运行 mixin 中的生命周期函数。

欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值