组件的样式冲突scoped
默认情况下写在组件中的样式会全局生效,因此会很容易造成多个组件之间的样式冲突问题,可以给组件加上scoped属性,可以让样式只作用于当前组件。
scoped原理?
1.当前组件内标签都被添加data-v-hash值的属性。
2.css选择器都被添加[data-v-hash值]的属性选择器。
组件内的data是一个函数:
export default { data(){ return{ name:"菜单" } } }
父和子组件通讯:
子组件:
<template> <div>{{ title }} <button @click="ChangeTitle">修改</button></div> </template> <script> export default { //通过prop可以得到父组件的属性 props: ["title"], methods:{ ChangeTitle(){ //通过$.emit可以往父组件传递方法 this.$emit("ParentChangeTitle","来自子组件的修改"); } } }; </script>
父组件:
<template> <div id="app"> <CommonFooter :title="MyTitle" @ParentChangeTitle="handleChange"></CommonFooter> </div> </template> <script> import CommonFooter from './components/CommonFooter.vue' export default { name: 'App', components: { CommonFooter }, data(){ return { MyTitle : "测试父传子通讯" } }, methods:{ handleChange (obj){ this.MyTitle = obj; } } } </script>