最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue中各種通信傳值方式總結(jié)

 更新時間:2019年02月14日 11:51:55   作者:陌上花早  
在本篇文章里小編給大家分享了關(guān)于vue中各種通信傳值方式的相關(guān)知識點,有興趣的朋友們學(xué)習(xí)下。

1、路由通信傳值

路由通信是通過路由跳轉(zhuǎn)用query把參數(shù)帶過去,也是vue常用的通信手段。

例子:創(chuàng)建并在路由注冊一個組件Head

<template>
 <div id="head">
  <button @click="handleChange">clickMe</button> //給按鈕綁定點擊事件
 </div>
 
</template>

<script>
export default {
 name: 'Head',
 data () {
 return {
  
 }
 },
 mounted(){
 
 },
 updated(){
 
 },
 methods:{
 handleChange(){
  this.$router.push({ path:"/about" , query:{ text:"我是阿格斯之盾" } }) //路由跳轉(zhuǎn),并用query帶過去參數(shù)
 }
 }
}
</script>
<style scoped>

</style>

創(chuàng)建另一個組件About并在路由注冊

<template>
 <div id="about">
 <p>我是關(guān)于頁:{{ message }}</p><button type="button" @click="handleChange">回到首頁</button> //顯示接收過來的數(shù)據(jù)
 </div>
 
</template>

<script>

export default {
 name: 'About',
 data () {
 return {
  message: "" 
 }
 },
 mounted(){
 this.message = this.$route.query.text //在生命周期中接收傳過來的數(shù)據(jù)
 },
 updated(){
 
 },
 methods:{
 handleChange(){
  this.$router.push({ path: "/" }) //點擊返回首頁
 }
 }
}
</script>
<style scoped>

</style>

路由注冊的簡單代碼

import Vue from 'vue'
import Router from 'vue-router'
import Head from '@/components/Head'
import About from '@/components/About'

Vue.use(Router)

export default new Router({
 mode: "history", 
 routes: [
 {
  path: '/',
  name: 'Head',
  component: Head
 },{
  path: '/about',
  name: 'About',
  component: About
 }
 ]
})

2、sessionStorage本地緩存通信

還是列舉上面的例子,將它們稍微改一改就可以了,路由配置都一樣的。sessionStorage的特點就是瀏覽器關(guān)掉緩存就會消失,這是它區(qū)別于localStorage的。

例子: Heade代碼:

<template>
 <div id="head">
  <button @click="handleChange">clickMe</button>
 </div>
 
</template>

<script>
export default {
 name: 'Head',
 data () {
 return {
  
 }
 },
 updated(){
 
 },
 methods:{
 handleChange(){
  this.$router.push({ path:"/about"})
 },
 message(){
  var message = "我是阿格斯之盾"
  sessionStorage.setItem('text', message) //創(chuàng)建緩存
 }
 },
 mounted(){
 this.message();
 }
}
</script>
<style scoped>

</style>

About代碼:

<template>
 <div id="about">
 <p>我是關(guān)于頁:{{ message }}</p><button type="button" @click="handleChange">回到首頁</button>
 </div>
 
</template>

<script>

export default {
 name: 'About',
 data () {
 return {
  message: ""
 }
 },
 mounted(){
 this.message = sessionStorage.getItem("text") //讀取緩存
 },
 updated(){
 
 },
 methods:{
 handleChange(){
  this.$router.push({ path: "/" })
 }
 }
}
</script>
<style scoped>

</style>

3、父組件向子組件通信

定義父組件Head,還是用上面的例子,父組件傳遞一句話給子組件,如果傳遞的參數(shù)很多,可使用json數(shù)組{}的形式。

例子: Head父組件代碼

<template>
 <div id="head">
  <About :text=message></About> //將message參數(shù)傳給子組件
 </div>
 
</template>

<script>
 import About from '@/components/About.vue'
export default {
 name: 'Head',
 components:{
 About
 },
 data () {
 return {
  message : "我是阿格斯之盾"
 }
 },
 mounted(){
 
 },
 methods:{
 
 }
}
</script>
<style scoped>

</style>

About子組件代碼

<template>
 <div id="about">
 <p>我是關(guān)于頁:{{ text }}</p>
 </div>
</template>

<script>

export default {
 name: 'About',
 props:{
 'text':[] //子組件接受數(shù)據(jù),[]里面可以寫傳入類型,如果不符合會報錯
 },
 data () {
 return {
  message: ""
 }
 },
 mounted(){
 
 },
 updated(){
 
 },
 methods:{
 handleChange(){
  
 }
 }
}
</script>
<style scoped>

</style>

4、子組件向父組件通信 子組件向父組件通信是通過emit事件發(fā)送的,話不多說,直接上案例,還是利用上面的案例稍作修改 About子組件代碼:

<template>
 <div id="about">
 <button @click="handleChange">點擊發(fā)送消息給父組件</button>
 </div>
</template>

<script>

export default {
 name: 'About',
 props:{
 'text':[]
 },
 data () {
 return {
  message: ""
 }
 },
 mounted(){
 
 },
 updated(){
 
 },
 methods:{
 handleChange(){
  this.$emit( "child-message" , "我是阿格斯之盾" ) //提交信息
 }
 }
}
</script>
<style scoped>

</style>

Head父組件代碼

<template>
 <div id="head">
  <About @child-message = "handleText"></About> //這里傳過來父組件需要用一個方法接住
  <p>來自子組件的消息:{{message}}</p>
 </div>
 
</template>

<script>
 import About from '@/components/About.vue'
export default {
 name: 'Head',
 components:{
 About
 },
 data () {
 return {
  message : ""
 }
 },
 mounted(){
 
 },
 methods:{
 handleText(data){ //這里的data就是子組件傳過來的內(nèi)容
  this.message = data
 }
 }
}
</script>
<style scoped>

</style>

5、vuex狀態(tài)管理

狀態(tài)管理使用起來相對復(fù)雜,但是對于大型項目確實非常實用的。

(1)安裝vuex,并建立倉庫文件

npm install vuex -s

安裝過后在src文件中創(chuàng)建store文件夾,并建立index.js文件,index.js的代碼如下:

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

const store = new Vuex.Store({
 state: {
 message: '我是阿格斯之盾'
 },
 mutations: {
 MESSAGE_INFO (state,view) {
  state.message = view;
 }
 }
})
export default store

(2)在min.js中注冊store倉庫 代碼如下:

import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
 el: '#app',
 router,
 store,
 components: { App },
 template: '<App/>'
})

(3)狀態(tài)的讀取和提交 還是使用上面的案例,我們以子組件About提交改變狀態(tài),父組件Head接受狀態(tài)并顯示出來下面是About組件提交狀態(tài)

<template>
 <div id="about">
 <button @click="handleChange">點擊發(fā)送消息給父組件</button>
 </div>
</template>

<script>

export default {
 name: 'About',
 props:{
 'text':[]
 },
 data () {
 return {
  message: ""
 }
 },
 mounted(){
 
 },
 updated(){
 
 },
 methods:{
 handleChange(){
  this.$store.commit("MESSAGE_INFO" , "我是火車王") //提交改變狀態(tài)
 }
 }
}
</script>
<style scoped>

</style>

Head組件接受狀態(tài):

<template>
 <div id="head">
  <About></About>
  <p>來自子組件的消息:{{this.$store.state.message}}</p> //直接使用this.$store.state.message接受數(shù)據(jù)顯示
 </div>
 
</template>

<script>
 import About from '@/components/About.vue'
export default {
 name: 'Head',
 components:{
 About
 },
 data () {
 return {
  message : ""
 }
 },
 mounted(){
 
 },
 methods:{

 }
}
</script>
<style scoped>

</style>

總結(jié):以上就是vue中的通信方式,當(dāng)然還有一些,比如說eventBus什么的,適用于中小型項目,但是我用的比較少,一般上面的幾種在開發(fā)中已經(jīng)夠用的,例子很簡單,學(xué)習(xí)是永無止境的,具體更深的東西還得下功夫去研讀官網(wǎng)或者其他資料,本文中有不對的地方或者疑惑的地方,還望大家多多指教!謝謝。

相關(guān)文章

  • 解決vue項目 build之后資源文件找不到的問題

    解決vue項目 build之后資源文件找不到的問題

    這篇文章主要介紹了解決vue項目 build之后資源文件找不到的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 簡單談一談Vue中render函數(shù)

    簡單談一談Vue中render函數(shù)

    vue中的render函數(shù),它返回的是一個虛擬節(jié)點vnode,也就是我們要渲染的節(jié)點,下面這篇文章主要給大家介紹了關(guān)于Vue中render函數(shù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Vue條件渲染與列表渲染

    Vue條件渲染與列表渲染

    這篇文章主要介紹了Vue條件渲染與列表渲染,條件渲染包括v-if、v-show等內(nèi)容,文章對條件渲染及列表渲染介紹詳細(xì),具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • vue 集成jTopo 處理方法

    vue 集成jTopo 處理方法

    這篇文章主要介紹了vue 集成jTopo 處理方法,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-08-08
  • 詳解@Vue/Cli 3 Invalid Host header 錯誤解決辦法

    詳解@Vue/Cli 3 Invalid Host header 錯誤解決辦法

    這篇文章主要介紹了詳解@Vue/Cli 3 Invalid Host header 錯誤解決辦法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Vue中的Vux配置指南

    Vue中的Vux配置指南

    Vux是Vue.js的一個ui庫,官網(wǎng)在這里,官方文檔的配置指南側(cè)重于技術(shù)的羅列,我這里簡化一下Vux的配置流程。感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2017-12-12
  • vue從后臺渲染文章列表以及根據(jù)id跳轉(zhuǎn)文章詳情詳解

    vue從后臺渲染文章列表以及根據(jù)id跳轉(zhuǎn)文章詳情詳解

    這篇文章主要給大家介紹了關(guān)于vue從后臺渲染文章列表以及根據(jù)id跳轉(zhuǎn)文章詳情的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 詳解Vue之計算屬性

    詳解Vue之計算屬性

    這篇文章主要介紹了Vue之計算屬性的相關(guān)知識,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • vue+iview實現(xiàn)分頁及查詢功能

    vue+iview實現(xiàn)分頁及查詢功能

    這篇文章主要為大家詳細(xì)介紹了vue+iview實現(xiàn)分頁及查詢功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 利用vue3+ts實現(xiàn)管理后臺(增刪改查)

    利用vue3+ts實現(xiàn)管理后臺(增刪改查)

    這篇文章主要介紹了利用vue3+ts實現(xiàn)管理后臺(增刪改查),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評論

会同县| 呼和浩特市| 天水市| 疏附县| 益阳市| 清原| 株洲县| 德化县| 武安市| 金昌市| 施甸县| 松桃| 喜德县| 体育| 永平县| 右玉县| 平邑县| 陵川县| 温宿县| 遂平县| 沿河| 佛教| 永春县| 郧西县| 德州市| 云南省| 石首市| 长岛县| 虎林市| 宁德市| 磐安县| 宜兴市| 开封县| 洛宁县| 江安县| 陇南市| 萍乡市| 滨州市| 彭山县| 天气| 昭觉县|