Vue框架中的几个新属性和配置项

目录

ref属性

        ref作用

        使用方法

props配置项

       props的作用:父组件向子组件传递数据时接收数据的配置项

       props的使用方法

父组件代码传递数据

子组件代码接收数据的三种方式

再次强调!!!

mixin配置项(混入也叫混合)

       mixin的作用:

        mixin的使用方法:

创建好mixin.js  (和main.js在一个文件夹下即可)        

  局部引入mixin代码示例

全局引入mixin(不推荐使用)

 mixin注意事项    

plugins插件配置项

        功能:用于增强Vue

        plugins本质:

        使用方法

scoped属性

       scoped 作用:


ref属性

        ref作用

                1. 被用来给元素或者子组件注册引用信息(id的替代者)

                2. 应用在html标签上通过$refs来获取真实DOM元素,应用在组件标签上获取的是组件实例对象

        使用方法

                在标签内设置ref="xxx",xxx是用到的名字

                然后用Vue.$refs.xxx   就可以获取所在标签的真实DOM

实例

 <div>
        <!-- v-text 向所在的节点中渲染文本内容,替换掉节点中原有的内容 -->
        <h1 v-text="msg" ref="title"></h1>
        <School ref="sch" />
        <button @click="showDOM()">点我输出上方的DOM节点</button>
    </div>
<script>
// 引入School组件
import School from './components/School.vue'
export default {
    name:'App',
    // 注册组件
    components:{School},
    data(){
        return {
            msg:'欢迎学习Vue'
        }
    },
    methods:{
        showDOM(){
            console.log(this.$refs.title);//输出真实DOM标签
            console.log(this.$refs.sch);//输出vc对象实例
        }
    }
}
</script>

props配置项

       props的作用:父组件向子组件传递数据时接收数据的配置项

       props的使用方法

                        1. 第一步:先在父组件中创建要传递的数据(可以是data中的数据,也可以是methods中的函数)

                        2. 第二步:在template模板中使用子组件的标签中添加 要传递的数据(name="李四",sex="女",age="18")

                        3. 第三步:在子组件中的实例中使用props属性接收传递过来的数据和data同级别

代码示例

父组件代码传递数据

<template>
<!-- 使用组件 -->
    <div>
        <!-- 传数据  冒号表示v-bind 会当成js表达式解析  所以传递过去的就是数字18而不是字符18 -->
        <Student name="李四" sex="女" :age="18">
        </Student>
    </div>
</template>

<script>
// 引入School组件
import Student from './components/Student.vue'
export default {
    name:'App',
    // 注册组件
    components:{ Student, },
   
}
</script>

子组件代码接收数据的三种方式

props接收数据有三种方式:

第一种普通接收,写成数组形式

<template>
<div>
    <h1>{{msg}}</h1>
    <h3>学生名字{{name}}</h3>
    <h3>学生性别{{sex}}</h3>
    <h3>学生年龄{{myAge}}</h3>
    <button @click="updateAge">点击</button>
</div>
</template>

<script>
export default {
    name:'School',
    data(){
        return{
            msg:'我是尚硅谷的学生', 
        // 再添加一个属性,然后把传递过来的age值接收一下,看看是不是数字18
            myAge:this.age  
        }      
    },
    // Vue规定是不可以直接修改传递过来的数据的
    // 简单声明接收数据props    
    props:['name','sex','age'],
    methods:{
        // 避免直接修改传入的属性值
        updateAge(){
            this.myAge++
        }
    }

}
</script>

第二种限制数据类型接收

写成对向形式


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

第三种限制类型+默认值指令+必要性指令(用的较少,但是功能很齐全)

写成对象作为数组元素的形式

//接收数据时对数据进行类型限制+默认值的指令+必要性的指令  
    props:{
        name:{
            type:String,//name的类型是字符串
            required:true//name是必须要传的
        },
        age:{
            type:Number,
            default:18,//没有传递值,默认18
        },
        sex:{
            type:String,
            required:true
        }
    },

再次强调!!!

        props是只读的,Vue底层会监视你对props的修改,不能直接进行修改传来的数据。

        若有修改需要,可以在data中添加一个属性接收传递过来的数据,然后修改data中的数据。

mixin配置项(混入也叫混合)

       mixin的作用:

          可以把多个组件中共用的数据或者配置项提取出来,提高代码的复用率。

        mixin的使用方法:

                1.定义:mixin文件是一个js文件,里面有很多个带有命名的实例。

                2.引入:mixin在需要用到的地方引入import {xxx} from '路径'。

                3.使用:在实例对象中添加一个mixins配置项  如mixin : [ xxx ] 必须写成数组形式!

创建好mixin.js  (和main.js在一个文件夹下即可)        

// 这个用于局部
export const mixin1 = {
    methods: {
        showName() {
            alert(this.name)
        }
    },
}
// 这个用于全局引用
export const mixin2 = {
    data() {
        return {
            x: 1,
            y: 2
        }

    }
}

  局部引入mixin代码示例

        在子组件中局部引入 只能在这个组件中使用

<template>
<div>
    <h3 @click="showName()">学校名字{{name}}</h3>
    <h3>学生性别{{address}}</h3>
</div>
</template>

<script>
// 引入一个混合  用的是大括号  mixin1是main.js文件中的命名
import {mixin1} from '../mixin.js'
export default {
    name:'School',
    data(){
        return{
            name:'atguigu', 
            address:'北京'
        }      
    }, 
    mixin:[mixin1],
}
</script>

全局引入mixin(不推荐使用)

        这个是在main.js中引入使用的,注意的是全局使用用的是Vue.mixin(xxx)而不是在实例对象中!!!

// 引入Vue
import Vue from 'vue'
// 引入App
import App from './App'


// 引入全局混合mixin
import { mixin2 } from './mixin'
// 使用全局混合
Vue.mixin(mixin2)


// 关闭生产提示
Vue.config.productionTip = false

// 创建vm
new Vue({
    // 指定容器
    el: '#app',
    // 解析App模板
    render: h => h(App)
})

 mixin注意事项    

        (1)混合中data属性没有组件中使用的data属性级别高,如果组件data中有相同的属性值,则用组件内自带的

        (2)混合中的methods配置项中的函数会和组件中的methods并在一起两个methods的函数都会执行,但是会优先执行混合里的函数

plugins插件配置项

        功能:用于增强Vue

        plugins本质:

                包含install方法的一个对象,install的第一个参数是Vue,第二个参数是插件使用者传递参数的数据。

        使用方法

                和mixin相似,需要创建一个plugins.js   里面可以放之前写的过滤器,自定义指令,混入,往原型对象中添加方法也可以放在这里面

                在main.js中使用都是全局配置!

//引入
import plugins from './plugins'
// 使用插件
Vue.use(plugins)

scoped属性

       scoped 作用:

                在所有组件中,最后style样式会整合在一起,那面会出现标签类名相同的情况,在组件的style标签中加上这个属性,就可以确保这个style中的类名只在这对这个组件中的标签生效,不会对其他组件中相同类名的标签生效

其他组件中也可使用demo作为类名,但是不会受这个影响

                

<style scoped>
.demo{
    background-color: skyblue;
}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值