vue子組件獲取到它父組件數(shù)據(jù)的4種方法
前言
在Vue組件中,可以通過props屬性來接收來自父組件的數(shù)據(jù),然后在組件中使用這些數(shù)據(jù)。如果父組件需要將它的數(shù)據(jù)傳遞給子組件,可以將這些數(shù)據(jù)通過props傳遞給子組件。
如果要在子組件中獲取嵌套它的頁面的數(shù)據(jù),可以使用Vue的依賴注入功能來實(shí)現(xiàn)。依賴注入允許父組件向子組件傳遞一些全局的依賴項(xiàng),包括數(shù)據(jù)、方法、插件等等。子組件可以通過訪問父組件的$parent屬性來獲取其父組件的數(shù)據(jù),但這種方法不太優(yōu)雅,而且容易受到組件層次結(jié)構(gòu)的影響。
下面是一種更為優(yōu)雅的方法,使用Vue的依賴注入來獲取嵌套它的頁面的數(shù)據(jù):
0,普遍的是用this.$parent即可
this.$parent.someData
1,在父組件中定義一個(gè)全局的數(shù)據(jù)對(duì)象,將要傳遞給子組件的數(shù)據(jù)保存在這個(gè)對(duì)象中:
export default { data() { return { globalData: { // 要傳遞給子組件的數(shù)據(jù) someData: 'Hello world' } } } }
2, 在父組件的模板中,使用provide屬性將全局?jǐn)?shù)據(jù)對(duì)象注入到組件實(shí)例中:
<template> <div> <child-component></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { globalData: { // 要傳遞給子組件的數(shù)據(jù) someData: 'Hello world' } } }, provide() { return { globalData: this.globalData } } } </script>
3,在子組件中,使用inject屬性來注入父組件傳遞的全局?jǐn)?shù)據(jù)對(duì)象,然后就可以在子組件中使用這些數(shù)據(jù)了:
<template> <div> <p>{{ globalData.someData }}</p> </div> </template> <script> export default { inject: ['globalData'] } </script>
在上面的代碼中,父組件使用provide屬性將全局?jǐn)?shù)據(jù)對(duì)象注入到組件實(shí)例中。子組件使用inject屬性來注入父組件傳遞的全局?jǐn)?shù)據(jù)對(duì)象,然后就可以在子組件中通過this.globalData訪問這些數(shù)據(jù)了。
需要注意的是,provide和inject屬性只能用于祖先組件向后代組件傳遞數(shù)據(jù),而不適用于子組件向父組件傳遞數(shù)據(jù)。如果需要在子組件中修改父組件的數(shù)據(jù),應(yīng)該使用事件和$emit方法來實(shí)現(xiàn)。
總結(jié)
到此這篇關(guān)于vue子組件獲取到它父組件數(shù)據(jù)的4種方法的文章就介紹到這了,更多相關(guān)vue子組件獲取父組件數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue父組件中獲取子組件中的數(shù)據(jù)(實(shí)例講解)
- vue父組件異步獲取數(shù)據(jù)傳給子組件的方法
- 詳解VUE里子組件如何獲取父組件動(dòng)態(tài)變化的值
- Vue父組件如何獲取子組件中的變量
- vue 父組件通過$refs獲取子組件的值和方法詳解
- vue.js 子組件無法獲取父組件store值的解決方式
- vue實(shí)現(xiàn)父組件獲取子組件的方法或?qū)傩灾翟斀?/a>
- vue子組件如何獲取父組件的內(nèi)容(props屬性)
- vue中實(shí)現(xiàn)子組件接收父組件方法并獲取返回值
- VUE父組件異步獲取數(shù)據(jù),子組件接收的值為空的問題
- vue父組件異步如何獲取數(shù)據(jù)傳給子組件
- vue3父組件使用ref獲取子組件的屬性和方法
- vue子組件實(shí)時(shí)獲取父組件的數(shù)據(jù)實(shí)現(xiàn)
相關(guān)文章
詳解mpvue中小程序自定義導(dǎo)航組件開發(fā)指南
這篇筆記主要記錄一下基于mpvue的小程序中實(shí)現(xiàn)自定義導(dǎo)航的思路及應(yīng)用。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02element-UI el-table修改input值視圖不更新問題
這篇文章主要介紹了element-UI el-table修改input值視圖不更新問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02Vue服務(wù)端渲染實(shí)踐之Web應(yīng)用首屏耗時(shí)最優(yōu)化方案
這篇文章主要介紹了Vue服務(wù)端渲染實(shí)踐之Web應(yīng)用首屏耗時(shí)最優(yōu)化方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Vue?cli3.0創(chuàng)建Vue項(xiàng)目的簡(jiǎn)單過程記錄
Vue CLI是一個(gè)基于Vue.js進(jìn)行快速開發(fā)的完整系統(tǒng),下面這篇文章主要給大家介紹了關(guān)于Vue?cli3.0創(chuàng)建Vue項(xiàng)目的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08vue3中使用highlight.js實(shí)現(xiàn)代碼高亮顯示的代碼示例
代碼高亮是在網(wǎng)頁開發(fā)中常見的需求之一,它可以使代碼在頁面上以不同的顏色或樣式進(jìn)行突出顯示提高可讀性,這篇文章主要介紹了vue3中使用highlight.js實(shí)現(xiàn)代碼高亮顯示的相關(guān)資料,需要的朋友可以參考下2025-04-04Vue實(shí)現(xiàn)簡(jiǎn)單可擴(kuò)展甘特圖的方法詳解
Ganttastic是一個(gè)小型的Vue.js組件,用于在Web應(yīng)用程序上呈現(xiàn)一個(gè)可配置的、可拖動(dòng)的甘特圖。本文就將用它來實(shí)現(xiàn)簡(jiǎn)單可擴(kuò)展的甘特圖,感興趣的可以嘗試一下2022-11-11關(guān)于vue.js v-bind 的一些理解和思考
本篇文章主要介紹了關(guān)于vue.js v-bind 的一些理解和思考,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06vue iview組件表格 render函數(shù)的使用方法詳解
下面小編就為大家分享一篇vue iview組件表格 render函數(shù)的使用方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03詳解vue開發(fā)中調(diào)用微信jssdk的問題
這篇文章主要介紹了vue開發(fā)中調(diào)用微信jssdk的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04