亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue中各種通信傳值方式總結

2019-11-19 12:08:46
字體:
來源:轉載
供稿:網友

1、路由通信傳值

路由通信是通過路由跳轉用query把參數帶過去,也是vue常用的通信手段。

例子:創建并在路由注冊一個組件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:"我是阿格斯之盾" } }) //路由跳轉,并用query帶過去參數 } }}</script><style scoped></style>

創建另一個組件About并在路由注冊

<template> <div id="about"> <p>我是關于頁:{{ message }}</p><button type="button" @click="handleChange">回到首頁</button> //顯示接收過來的數據 </div> </template><script>export default { name: 'About', data () { return {  message: ""  } }, mounted(){ this.message = this.$route.query.text //在生命周期中接收傳過來的數據 }, 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的特點就是瀏覽器關掉緩存就會消失,這是它區別于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) //創建緩存 } }, mounted(){ this.message(); }}</script><style scoped></style>

About代碼:

<template> <div id="about"> <p>我是關于頁:{{ 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,還是用上面的例子,父組件傳遞一句話給子組件,如果傳遞的參數很多,可使用json數組{}的形式。

例子: Head父組件代碼

<template> <div id="head">  <About :text=message></About> //將message參數傳給子組件 </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>我是關于頁:{{ text }}</p> </div></template><script>export default { name: 'About', props:{ 'text':[] //子組件接受數據,[]里面可以寫傳入類型,如果不符合會報錯 }, data () { return {  message: "" } }, mounted(){  }, updated(){  }, methods:{ handleChange(){   } }}</script><style scoped></style>

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

<template> <div id="about"> <button @click="handleChange">點擊發送消息給父組件</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就是子組件傳過來的內容  this.message = data } }}</script><style scoped></style>

5、vuex狀態管理

狀態管理使用起來相對復雜,但是對于大型項目確實非常實用的。

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

npm install vuex -s

安裝過后在src文件中創建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)狀態的讀取和提交 還是使用上面的案例,我們以子組件About提交改變狀態,父組件Head接受狀態并顯示出來下面是About組件提交狀態

<template> <div id="about"> <button @click="handleChange">點擊發送消息給父組件</button> </div></template><script>export default { name: 'About', props:{ 'text':[] }, data () { return {  message: "" } }, mounted(){  }, updated(){  }, methods:{ handleChange(){  this.$store.commit("MESSAGE_INFO" , "我是火車王") //提交改變狀態 } }}</script><style scoped></style>

Head組件接受狀態:

<template> <div id="head">  <About></About>  <p>來自子組件的消息:{{this.$store.state.message}}</p> //直接使用this.$store.state.message接受數據顯示 </div> </template><script> import About from '@/components/About.vue'export default { name: 'Head', components:{ About }, data () { return {  message : "" } }, mounted(){  }, methods:{ }}</script><style scoped></style>

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本久久亚洲电影| 国产精品私拍pans大尺度在线| 国产乱肥老妇国产一区二| 欧美久久久精品| 欧美激情一区二区三区成人| 日韩av综合中文字幕| 亚洲女同精品视频| 久久精品国产清自在天天线| 国产精品流白浆视频| 91久久国产精品91久久性色| 美女福利精品视频| 欧美亚洲另类在线| 日韩美女激情视频| 奇米一区二区三区四区久久| 久久精品视频99| 亚洲成色777777在线观看影院| 国产成人精品优优av| 欧美大码xxxx| 亚洲伊人第一页| 91chinesevideo永久地址| 色婷婷av一区二区三区久久| 成人激情免费在线| 亚洲欧美国产高清va在线播| 国产精品一区二区女厕厕| 中文字幕自拍vr一区二区三区| 欧美激情亚洲另类| 久久精品影视伊人网| 国产精品自产拍在线观看中文| 91精品国产综合久久香蕉922| 91wwwcom在线观看| 自拍偷拍亚洲精品| 96国产粉嫩美女| 欧美精品精品精品精品免费| 日韩美女av在线免费观看| 北条麻妃在线一区二区| 亚洲性猛交xxxxwww| 日韩精品在线免费观看| 97国产精品视频| 国产精品久久久久久亚洲调教| 亚洲午夜久久久久久久| 精品亚洲一区二区三区在线观看| 亚洲黄色在线观看| 欧美又大粗又爽又黄大片视频| 国产精品视频区| 91美女片黄在线观| 91中文精品字幕在线视频| 欧洲美女免费图片一区| 国产精品自拍偷拍视频| 亚洲成人av片在线观看| 日韩女在线观看| 国产精品劲爆视频| 日韩精品在线电影| 国产精品男女猛烈高潮激情| 日韩成人中文电影| 91精品国产综合久久男男| 久久精品影视伊人网| 亚洲大尺度美女在线| 欧美精品videossex88| 欧美与黑人午夜性猛交久久久| 成人黄色短视频在线观看| 夜夜躁日日躁狠狠久久88av| 精品综合久久久久久97| 亚洲黄色成人网| 国产日韩视频在线观看| 欧美高清无遮挡| 久久久亚洲福利精品午夜| 亚洲2020天天堂在线观看| 国产精品91在线观看| 欧美性视频精品| 国产啪精品视频| 亚洲电影免费观看高清完整版在线观看| 国产精品久久久久久久久久| 日韩激情视频在线播放| 91中文字幕一区| 国内精品一区二区三区四区| 亚洲欧洲第一视频| 欧美一区二三区| 日韩中文视频免费在线观看| 91精品久久久久久久久久入口| 青青草国产精品一区二区| 日本精品久久电影| 中文字幕一区二区三区电影| 欧美在线视频观看免费网站| 亚洲日本欧美中文幕| 中文字幕亚洲一区| 成人做爰www免费看视频网站| 国产精品扒开腿做爽爽爽男男| 日本一欧美一欧美一亚洲视频| 黑人狂躁日本妞一区二区三区| 亚洲欧美国产另类| 日韩有码片在线观看| 精品国产一区二区三区久久| 欧美激情videoshd| 亚洲欧美中文字幕| 久久成人人人人精品欧| 在线播放日韩专区| 成人激情免费在线| 欧美激情综合色综合啪啪五月| 国产精品欧美风情| 亚洲男人天堂2024| 欧美激情视频在线免费观看 欧美视频免费一| 久久青草精品视频免费观看| 久久精品国产2020观看福利| 一区二区三区国产视频| 欧美性猛交视频| 欧美性生交xxxxxdddd| 国产亚洲视频中文字幕视频| 久久人人爽人人爽人人片av高清| 亚洲国产小视频在线观看| 久久精品国产综合| 国产一区在线播放| 亚洲精品aⅴ中文字幕乱码| 一本一本久久a久久精品牛牛影视| 亚洲精品永久免费精品| 久久色在线播放| 麻豆国产精品va在线观看不卡| 俺去啦;欧美日韩| 亚洲欧美一区二区激情| 亚洲无限av看| 国产日韩在线视频| 性欧美办公室18xxxxhd| 国产精品吹潮在线观看| 在线亚洲午夜片av大片| 亚洲欧洲国产伦综合| 国产一区二区色| 国产精品偷伦视频免费观看国产| 色综合久久88色综合天天看泰| 国语自产精品视频在线看抢先版图片| 亚洲欧美成人在线| 欧美日韩一区二区免费视频| 色妞色视频一区二区三区四区| 亚洲精品日韩久久久| 欧美性xxxx极品高清hd直播| 国产精品久久久久99| 亚洲福利精品在线| 91亚洲精品在线观看| 国产精品久久久久久亚洲影视| 亚洲电影免费观看高清| 久久视频在线播放| 精品久久久久久| 日韩中文字幕在线| 午夜精品久久久久久久白皮肤| 日韩理论片久久| 岛国av一区二区在线在线观看| 久热精品视频在线观看| 国内久久久精品| 日韩av网站大全| 久久视频这里只有精品| 中文在线资源观看视频网站免费不卡| 国产999精品久久久影片官网| 日韩亚洲欧美中文高清在线| 国产v综合ⅴ日韩v欧美大片| 成人激情黄色网| 欧美激情一区二区三区成人| 国产精品视频久久久久| 欧美一区二区三区四区在线| 国产福利精品av综合导导航| 欧美亚洲国产视频| 国产精品va在线播放我和闺蜜| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲视频在线观看免费| 欧美激情在线有限公司| 国产欧美日韩专区发布| 欧美成人精品在线播放|