父给子传值案例:
APP.vue(父)注册子组件Counter,并定义num值,给子组件传值
<template>
<div>
<Counter num="10"></Counter>
</div>
</template>
<script>
import Counter from './components/first'
export default {
data(){
return {}
},
components: {
Counter
}
}
first.vue(子)接收父传的值,使用到props接收值。
<template>
<div>
<button @click="increment">+</button>
<button @click="decrement">-</button>
<p><span>{{num}}</span></p>
</div>
</template>
<script>
export default {
props: ["num"],
data () {
return {
num: 0,
}
},
methods: {
increment(){
this.num++;
},
decrement(){
this.num--;
}
}
}
子给父传值案例–需要通过emit操作:
APP.vue(父)在注册子组件Counter时自定义两个事件(incre和decre),并在增加increment和decrement的方法,说道底就是,父方法创建方法让子组件调用改变
<template>
<div>
<Counter v-bind:num="num" v-on:incre="increment" v-on:decre="decrement"></Counter>
<p>父:{{num}}</p>
</div>
</template>
<script>
import Counter from './components/first'
export default {
data(){
return {
//给父默认为10
num:10
}
},
components: {
Counter
},
methods:{
increment(){
this.num++;
},
decrement(){
this.num--;
}
}
}
//子组件使用$emit调用父组件(注意是事件名)
<template>
<div>
<button @click="increment">+</button>
<button @click="decrement">-</button>
<p><span>{{num}}</span></p>
</div>
</template>
<script>
export default {
props: ["num"],
data () {
return {
num: 0
}
},
methods: {
increment(){
this.$emit('incre');
},
decrement(){
this.$emit('decre');
}
}
}