欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Vue的組件間傳值(包括Vuex)

 更新時間:2021年08月16日 17:33:06   作者:RisingSun  
這篇文章主要介紹了Vue的組件間傳值(包括Vuex),全文通過舉例子及代碼的形式進行了一個簡單的介紹,希望大家能夠理解并且學(xué)習(xí)到其中知識

在不使用Vuex的情況下,組件間傳值的方式是通過父傳子的方式或者兄弟組件傳值。

父傳子:

fatherComponent:

<template>
    <div>
        <HELLOWORLD :needData="content"></HELLOWORLD>
    </div>
</template>

<script>
import HELLOWORLD from '../components/HelloWorld.vue'
export default {
    components:{
        HELLOWORLD
    },
    data(){
        return{
            content:"content"
        }
    }
}
</script>

<style lang="less" scoped>

</style>

SonComponent(子組件名稱為HELLOWORLD):

<template>
    <div>
        <h1>HELLOWORLD</h1>
    </div>
</template>

<script>
export default {
    props:["needData"],
    data(){
        return{
            H:this.needData,
        }
    },
    mounted(){
        console.log(this.H);
    }
}
</script>

<style lang="less" scoped>

</style>

在這里插入圖片描述

子傳父:

FatherComponent:

<template>
    <div>
        <HELLOWORLD @sendData="getData"></HELLOWORLD>
    </div>
</template>

<script>
import HELLOWORLD from '../components/HelloWorld.vue'
export default {
    components:{
        HELLOWORLD
    },
    data(){
        return{
            
        }
    },
    methods:{
        getData(sonData){
            console.log("data=>",sonData);
        },
    }
}
</script>

<style lang="less" scoped>

</style>

SonComponent:

<template>
    <div>
        <h1>HELLOWORLD</h1>
    </div>
</template>

<script>
export default {
    data(){
        return{
            content:"content"
        }
    },
    mounted(){
        this.$emit("sendData",this.content);
    }
}
</script>

<style lang="less" scoped>

</style>

效果圖:

在這里插入圖片描述

實際上,為了數(shù)據(jù)能在父子組件間傳值;還可以通過調(diào)用父組件的函數(shù)或調(diào)用子組件的函數(shù)的方式實現(xiàn)傳值。 Vue中子組件調(diào)用父組件的函數(shù)

http://www.dbjr.com.cn/article/134732.htm

Vue父組件調(diào)用子組件的函數(shù)

http://www.dbjr.com.cn/article/219793.htm

Vuex是Vue框架中不可或缺的一部分;

Vuex在需要多組件通信的時候顯得格外重要;比如數(shù)據(jù)在父組件形成,但數(shù)據(jù)需要在子組件的子組件中使用時,就可以使用Vuex管理;或者說需要兄弟組件傳值時,可以使用Vuex。

在Vue的store.js中有五個屬性:
分別是state,mutations,actions,getters,modules

結(jié)構(gòu)為:

let a={
  state: {
  	name:"moduleA"
  },
  //mutations專門用于改變state屬性中的數(shù)據(jù)
  mutations: {
  	setFun(state,item){
		state.name=item;
	}
  }
}

export default new Vuex.Store({
  //state專門存放數(shù)據(jù)
  state: {
  	num:100,
  	useAcomponent:{
		name:"A",
	},
	useBcomponent:"content",
  },
  //mutations專門用于改變state屬性中的數(shù)據(jù)
  mutations: {
  	setStateFun(state,item){
		state.useBcomponent="Bcomponent";
	}
  },
  actions: {
  	httpGetData(store,item){
		setTimeout(()=>{
			console.log(item);
			store.commit("setStateFun",item);
		},3000)
	}
  },
  getters:{
  //調(diào)用getters中的函數(shù)時沒有入?yún)?
	getterFun1(state){
		return state.num++
	}
  //調(diào)用getters中的函數(shù)時有入?yún)?
  	gettterFun2(state){
		return function(val){
			return state.num+=val;
		}
	}
  },
  modules: {
  	ModuleA:a
  }
});
}

state中的數(shù)據(jù)可以在不同組件中訪問獲取。

獲取state的數(shù)據(jù):

this.$store.state.state對象中的數(shù)據(jù);
例如
let val=this.$store.state.num;

更改state數(shù)據(jù),就是調(diào)用Vuex的mutations對象中的函數(shù):

this.$store.commit("函數(shù)名","數(shù)據(jù)");
例如
this.$store.commit("setStateFun","testSetItem");

actions對象,用于在Vuex中發(fā)請求

this.$store.dispatch("函數(shù)名","數(shù)據(jù)");
例如
this.$store.dispatch("httpGetData","testItem");

getters對象,類似Vue的計算屬性

this.$store.getters.函數(shù)名;
例如
//沒入?yún)r
this.$store.getters.getterFun1;
//有入?yún)r
this.$store.getters.getterFun2(123);

modules對象,類似將需要使用的store模塊化分開,每個modules對象對應(yīng)一個模塊

//獲取modules對象中的state數(shù)據(jù)
this.$store.state.modules對象名.state值;
例如
this.$store.state.ModuleA.name
//使用modules對象中的mutations的函數(shù)
this.$store.commit("函數(shù)名","入?yún)?shù)據(jù)");
例如
this.$store.commit("setFun","itemabc");
//這里需要注意,如果modules模塊中與外部(不是modules對象模塊)的mutations對象中有相同名字的函數(shù)時,則相同名字的函調(diào)用時都會執(zhí)行

到此這篇關(guān)于淺談Vue的組件間傳值(包括Vuex)的文章就介紹到這了,更多相關(guān)Vue 組件間傳值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論