代码示例 | // ParentComponent.vue
<template>
<div>
<BrotherComponent :bucket="fruitBucket"></BrotherComponent>
<SisterComponent :bucket="fruitBucket"></SisterComponent>
</div>
</template>
<script>
import BrotherComponent from "./BrotherComponent"
import SisterComponent from "./SisterComponent"
export default {
name: "ParentComponent",
components: {BrotherComponent, SisterComponent},
data () {
return {
fruitBucket: ["apple", "pear", "banana", "orange"]
}
}
}
</script>
// BrotherComponent.vue
<template>
<div>
<button @click="eat">Brother Eat</button>
</div>
</template>
<script>
export default {
name: "BrotherComponent",
props: {
bucket: Array
},
methods: {
eat () {
this.bucket.pop()
console.log(JSON.stringify(this.bucket))
}
}
}
</script>
// SisterComponent.vue
<template>
<div>
<button @click="eat">Sister Eat</button>
</div>
</template>
<script>
export default {
name: "SisterComponent",
props: {
bucket: Array
},
methods: {
eat () {
this.bucket.pop()
console.log(JSON.stringify(this.bucket))
}
}
}
</script> | // ParentComponent.vue
<template>
<div>
<BrotherComponent></BrotherComponent>
<SisterComponent></SisterComponent>
</div>
</template>
<script>
import BrotherComponent from "./BrotherComponent"
import SisterComponent from "./SisterComponent"
export default {
name: "ParentComponent",
components: {BrotherComponent, SisterComponent},
data () {
return {
fruitBucket: ["apple", "pear", "banana", "orange"]
}
},
provide () {
return {
"eat": this.eatFruit
}
},
methods: {
eatFruit (fruit) {
let index = this.fruitBucket.indexOf(fruit)
if (index > -1) {
this.fruitBucket.splice(index, 1)
}
console.log(JSON.stringify(this.fruitBucket))
}
}
}
</script>
// BrotherComponent.vue
<template>
<div>
<button @click="eatFruit">Brother Eat</button>
</div>
</template>
<script>
export default {
name: "BrotherComponent",
inject: ["eat"],
methods: {
eatFruit () {
this.eat("apple")
}
}
}
</script>
// SisterComponent.vue
<template>
<div>
<button @click="eatFruit">Sister Eat</button>
</div>
</template>
<script>
export default {
name: "SisterComponent",
inject: ["eat"],
methods: {
eatFruit () {
this.eat("orange")
}
}
}
</script> |
---|