利用 provide
& inject
机制,父元件当作所有其子元件的 provider
,无论所属的子元件有多深!
provide
option 提供资料
provide
定义inject
option 去使用资料假设有一个这样的层级:
Root
└─ TodoList
├─ TodoItem
└─ TodoListFooter
├─ ClearTodosButton
└─ TodoListStatistics
要从todo-items
传值给 TodoListStatistics
,可以利用先前介绍的 props
一层一层往下传
TodoList -> TodoListFooter -> TodoListStatistics 千万不要
这样的情境可以利用 provide
/inject
const app = Vue.createApp({})
app.component('todo-list', {
data() {
return {
todos: ['Feed a cat', 'Buy tickets']
}
},
provide: {
user: 'John Doe'
},
template: `
<div>
{{ todos.length }}
<!-- rest of the template -->
</div>
`
})
app.component('todo-list-statistics', {
inject: ['user'],
created() {
console.log(`Injected property: ${this.user}`) // Injected 的属性: John Doe
}
})
但但但,无法传递实体元件的属性,如以下例子
ex:
app.component('todo-list', {
data() {
return {
todos: ['Feed a cat', 'Buy tickets']
}
},
provide: {
todoLength: this.todos.length // 会报错 `Cannot read property 'length' of undefined`
// 无法取得 data 中的 todos
},
template: `
...
`
})
如果要取得实体元件中的属性,必须将 provide
转成 function
并回传物件
ex:
app.component('todo-list', {
data() {
return {
todos: ['Feed a cat', 'Buy tickets']
}
},
// function 形式
provide() {
// 回传物件
return {
todoLength: this.todos.length
}
},
template: `
...
`
})
有关跨层级传递,往後还会介绍(?!)
mitt
Vuex
Vue Composition API
Slots
每日一句:
每天都在跟时间赛跑
<<: [Day23]C# 鸡础观念- 物件导向(oop)~属性(Property)
>>: Progressive Web App 离线後备页面: 玩过 Chrome 小恐龙游戏了吗 (11)
在之前有说到为甚麽会有这张去 Monitor SEO 的数字总表,一开始只是要记录一个简单的事:平均...
Vim的基本操作、模式与状态列 [系列文目录] 在使用Vim之前,让我们来认识一下Vim的模式(Mo...
终於来到第二个练习了! 练习范例:https://www.sixvfx.com/northern_l...
今天要来分享之前实习开发 QA Bot, LUIS Bot 设定 proxy 的地方。 QnA Ma...
前述 今天用前面做过的小画家相似功能,来完成一个可以在文件上面签名的功能~ 当然也会有新的东西可以玩...