provide/inject
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./lib/vue.js"></script>
</head>
<body>
<div id="app">
<!-- A嵌套B组件 B组件又嵌套C组件 -->
<a-component></a-component>
</div>
<script>
Vue.component('a-component', {
data () {
return {
jc1: 1000,
name:'zs'
}
},
provide () {
this.jc1= Vue.observable({
jc1:1000
});
return {
jc2: this.jc1,
names:this.name
}
},
template: `
<div>
我是A组件--{{jc1}}
<button @click='handle'>点击我改变值</button>
<b-component></b-component>
</div>`,
methods: {
handle(){
console.log(this)
}
},
})
Vue.component('b-component', {
inject: ['jc2','names'],
template: `<div>
我是B组件--{{jc2}}---{{names}}
<c-component></c-component>
</div>`
})
Vue.component('c-component', {
inject: ['jc2','names'],
template: `<div>我是C组件--{{jc2}}---{{names}}</div>`
})
Vue.config.silent = false
var vm = new Vue({
el: '#app'
})
</script>
</body>
</html>
关于provide/inject的一些知识