在 Vue3 component 單檔案元件(SFC)示範(使用元件、傳入參數) 這篇中有示範使用 props 將資料從父層傳遞到子元件,但是如果 App.vue 裡面有 Components1.vue 子元件,再裡面還有 Components2.vue 子元件,這樣 App.vue 要傳遞資料給 Components2.vue 不就要先傳給 Components1.vue 再傳給 Components2.vue?
其實可以在父層透過 provide 公開傳遞資料,然後在任意子層使用 inject 接收。
在父層透過 provide 公開傳遞資料:
在任意子層使用 inject 接收
傳遞的可以是 ref, reactive 或任意資料,但是很可能出現子元件接收資料時父元件還未傳送,導致好像沒有接到資料,所以建議使用 ref 或 reactive
參考資料:
vuejs.org - Composition API: Dependency Injection
其實可以在父層透過 provide 公開傳遞資料,然後在任意子層使用 inject 接收。
在父層透過 provide 公開傳遞資料:
import {provide, reactive} from 'vue'
const userProfile = reactive({
userName: 'Ruyut',
});
provide('userProfile', userProfile)
在任意子層使用 inject 接收
import {inject} from "vue";
const userProfile = inject("userProfile"); // inject 可以增加第二個參數,用來表示預設值
console.log(userProfile.name);
傳遞的可以是 ref, reactive 或任意資料,但是很可能出現子元件接收資料時父元件還未傳送,導致好像沒有接到資料,所以建議使用 ref 或 reactive
參考資料:
vuejs.org - Composition API: Dependency Injection
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com