Vue3 Provide / Inject跨越组件使用数据
作者:温新
时间:2021-08-09
hi,我是温新,一名PHPer
子组件接收父组件的数据使用props
,如有这样一个结构:A-B-C...
组件之间相互使用,A中使用B,B使用了C,要想使用父组件的数据,就必须一层一层的通过prop
传递下去,要是有N层呢?
C中要直接使用A中的数据该怎么办?Vue3提供了相关的方法。provide
提供跨组件使用的数据(简单的理解就是共享数据),要想使用这个共享数据就必须使用inject
来接收这个数据。下面看案例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Provide / Inject</title>
<script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<div id="app"></div>
<script>
const app = Vue.createApp({
data () {
return { count:1 }
},
// 提供跨越组件使用的数据
provide(){
return {count:this.count}
},
template:`<one :count="count"></one>`
});
app.component('one', {
// 接收父组件传递的数据
props:['count'],
template:`<div>子组件ONE {{ count }}<hr><two></two></div>`
});
app.component('two', {
// 跨越组件使用数据
// 跨过one组件,直接使用根组件数据
inject:['count'],
template:`<div>嵌套子组件<p>{{count}}</p></div>`
});
app.mount('#app');
</script>
</body>
</html>
我是温新
第天进步一点,就一点点
请登录后再评论