Vue基础篇二:Vue组件的核心概念

    科技2022-07-10  108

    系列文章目录

    Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念

    文章目录

    系列文章目录一、Vue组件的组成--属性二、Vue组件的组成--事件三、Vue组件的组成--插槽总结


    一、Vue组件的组成–属性

    属性可分为: 自定义属性 props export default { <!-- 属性todo,list,isVisible --> props: { todo: Object, list: { type: Array, default: ()=>[] }, isVisible: { type: Boolean, default: false, }, }, }; 原生属性 attrs 没有声明的属性,默认自动挂载到组件根元素上 <template> <div id="app"> <img alt="Vue logo" src="./assets/logo.png" /> <HelloWorld msg="Hello Vue!" /> <ol> <TodoItem <!-- 原生属性 --> title="列表项目" v-for="item in list" v-bind:todo="item" v-bind:key="item.id" ></TodoItem> </ol> </div> </template>

    设置inheritAttrs为false可以关闭自动挂载 export default { <!--关闭自动挂载 --> inheritAttrs: false, props: { todo: Object, list: { type: Array, default: ()=>[] }, checked: { type: Boolean, default: false, }, }, };

    特殊属性 class、style <template> <div id="app"> <img alt="Vue logo" src="./assets/logo.png" /> <!-- 特殊属性 --> <HelloWorld msg="Hello Vue!" style="color:red" /> <ol> <TodoItem title="列表项目" v-for="item in list" v-bind:todo="item" v-bind:key="item.id" ></TodoItem> </ol> </div> </template>

    二、Vue组件的组成–事件

    Vue组件的事件分类两类: 普通事件: @click,@input,@change,@xxx等事件,通过this.$emit(‘xxx’,…)触发 在这里插入代码片 <template> <div> <!-- 普通事件@change --> <input type="checkbox" :value="checked" @change="onChange" /> <a :class="{active:index === 1}">{{ todo.text }}</a> </div> </template> <script> export default { inheritAttrs: false, props: { todo: Object, list: { type: Array, default: () => [], }, checked: { type: Boolean, default: false, }, index: { type : Number, default: -1 } }, methods: { onChange(e) { console.log(e.target.checked) if (e.target.checked==true){ this.index=1 }else{ this.index =-1 } }, }, }; </script> <style scoped> .active { color: red; } </style>

    修饰符事件:@input.trim,@click.stop,@submit.prevent等,一般用于原生HTML元素,自定义组件需要自行开发支持

    三、Vue组件的组成–插槽

    <template> <div class="hello"> <h1>{{ msg }}</h1> <!-- 插槽 --> <slot name="button"/> </div> </template> <script> export default { name: 'HelloWorld', props: { msg: String } } </script> <template> <div id="app"> <img alt="Vue logo" src="./assets/logo.png" /> <HelloWorld msg="Hello Vue!" style="color:red"> <h2>老语法</h2> <input slot="button" type="submit" value="点击进行提交" /> </HelloWorld> <HelloWorld msg="Hello Vue!" style="color:red"> <h2>新语法</h2> <template v-slot:button> <input type="submit" value="点击进行提交" /> </template> </HelloWorld> <ol> <TodoItem title="列表项目" v-for="item in list" v-bind:todo="item" v-bind:key="item.id" ></TodoItem> </ol> </div> </template>

    总结

    Vue组件主要有属性、事件、插槽三大核心概念:
    Processed: 0.017, SQL: 8