
props-父组件向子组件传输数据,兄弟组件不能通信。




<template>
<div id="app">
<HelloWorld :persion="persion" :logPersion='logPersion'/>
</div>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue'
export default {
name: 'App',
data(){
return {
persion:{
name:"张三",
age:600,
},
}
},
components: {
HelloWorld
},
methods: {
logPersion(name,age){
alert(`姓名:${name} 年龄:${age}`);
},
}
}
</script>
<style>
/* #app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
} */
</style>
<template>
<div>
<h1>props实现通信</h1>
<!-- 父组件往子组件传数据通过props,子往父传通过方法 -->
<div>
<h4>姓名:{{name}}</h4>
<h4>年龄:{{age}}</h4>
<h4>人-name:{{persion.name}}</h4>
<h4>人-age{{persion.age}}</h4>
<button @click="logPersion('大李子',23)">点我试试</button>
</div>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
//第一种
//props:['name','age'],
//第二种
// props: {
// name: String,
// age: Number,
// persion:Object,
// logPersion:Function,
// },
//第三种:required:true 不传name,虽然页面报错但是数据没影响,严谨。
props: {
name:{type:String,required:true,default:'聊客'},
age: {type:Number,required:true,default:'13'},
persion:Object,
logPersion:Function,
},
}
</script>
<style scoped>
</style>

<template>
<div id="app">
<HelloWorld @btnClick='deleteP'/>
<p ref="word" class="word"> 我是要被删除的标签</p>
</div>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue'
export default {
name: 'App',
components: {
HelloWorld
},methods: {
deleteP(args){
console.log(args);
this.$refs.word.remove();
}
}
}
</script>
<style>
.word{
200px;
height: 200px;
background-color: #fff;
color: red;
display: flex;
justify-content: center;
align-content: center;
}
</style>
<template>
<div>
<button @click="btnClick">删除父组件</button>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
props: {
},
methods: {
btnClick(){
// 告诉父组件点击了按钮
this.$emit('btnClick',{name:'张三',age:23});
},
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>