国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

uniapp在不同頁(yè)面間跳轉(zhuǎn)時(shí)使用$emit和$on傳值無(wú)效問(wèn)題(記錄坑)

這篇具有很好參考價(jià)值的文章主要介紹了uniapp在不同頁(yè)面間跳轉(zhuǎn)時(shí)使用$emit和$on傳值無(wú)效問(wèn)題(記錄坑)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、需求是這樣的:

uni.$emit和uni.$on的跨頁(yè)傳值,正在踩坑,uni-app,前端

現(xiàn)在需要點(diǎn)擊首頁(yè)循環(huán)出來(lái)的列表中其中一項(xiàng),點(diǎn)擊后我們要讓他帶著參數(shù)跳轉(zhuǎn)到另外一個(gè)頁(yè)面。因?yàn)榱斜碇械臄?shù)據(jù)都是用v-for循環(huán)出來(lái)的,所以點(diǎn)擊每項(xiàng)傳遞的參數(shù)都是不同的。

1、用uni.navigateTo中的url拼接傳參

此時(shí)假設(shè)我們用到的頁(yè)面跳轉(zhuǎn)方式是uni.navigateTo,如果要帶參數(shù)跳轉(zhuǎn),那么可以在url的后面拼接上我們需要的參數(shù)就行,如下面代碼段所示

//在首頁(yè)傳遞參數(shù)
uni.navigateTo({
					url: `/subPackages/foodsafety/safetyTrainRules?id=${id}`,
					animationType: 'pop-in',
					animationDuration: 300
				});
//在跳轉(zhuǎn)頁(yè)面接收參數(shù)
onLoad(data){
            console.log(data)
            }

但是現(xiàn)在的傳參僅限于比較短的參數(shù),太長(zhǎng)的參數(shù)用拼接的方法會(huì)傳遞失敗,因?yàn)檫@種方法有長(zhǎng)度限制。

所以假如現(xiàn)在我們需要傳遞一個(gè)很長(zhǎng)的富文本參數(shù)就不能再使用上面的這個(gè)方法了,需要采取另外一個(gè)方法:

2、長(zhǎng)參數(shù)或者對(duì)象等用uni.$emit()和uni.$on()傳遞參數(shù)

uni.$emit('data',data)
uni.$on('data',function(data){})

uni.$emit和uni.$on都是uniapp官方提供的api,可以用來(lái)跨頁(yè)面、跨組件通訊

這次想記錄也就是因?yàn)樵谶@里碰到了坑!原本我以為只要按著這個(gè)順序用下來(lái)就好了,在首頁(yè)用$emit傳參數(shù),在跳轉(zhuǎn)的頁(yè)面用$on接收參數(shù)就行了,結(jié)果就是我天真了

  1. 首先碰到的第一個(gè)問(wèn)題,是關(guān)于在uni.$on()中的回調(diào)函數(shù)的指向問(wèn)題,如果這樣寫(在文中跳轉(zhuǎn)的頁(yè)面就是接收參數(shù)的頁(yè)面)

    //跳轉(zhuǎn)的頁(yè)面中
    export default {
    		data() {
    			return {
    				content: ''
    }
    },
    onLoad(){
         uni.$on('data',function(data){ 
         console.log(this.content) //undefined
    })
    }
    }

    在控制臺(tái)中會(huì)打印undefined,這是因?yàn)榇藭r(shí)this的指向不對(duì)
    解決辦法(1):?改成箭頭函數(shù)以后就就能解決了

    //跳轉(zhuǎn)的頁(yè)面中
    export default {
    		data() {
    			return {
    				content: '1'
    }
    },
    onLoad(){
         uni.$on('data',(data)=>{ 
         console.log(this.content) //1
    })
    }
    }


    解決辦法(2):
    既然知道是this指向問(wèn)題,那就把我們需要的this給“請(qǐng)”進(jìn)去就好了

    //跳轉(zhuǎn)的頁(yè)面中
    export default {
    		data() {
    			return {
    				content: '1'
    }
    },
    onLoad(){
    let that = this
         uni.$on('data',function(data){ 
         console.log(that.content) //1
    })
    }
    }
  2. 第二個(gè)問(wèn)題就是$emit和$on定義順序問(wèn)題

    ?uni.$emit和uni.$on的跨頁(yè)傳值,正在踩坑,uni-app,前端

    在用$emit攜帶參數(shù)跨頁(yè)面時(shí),在跳轉(zhuǎn)的頁(yè)面里面發(fā)現(xiàn)第一次進(jìn)入的時(shí)候并沒(méi)有觸發(fā)uni.$on(看控制臺(tái)打印得知,第一次進(jìn)入的時(shí)候不打印,回退到原來(lái)的頁(yè)面后再次點(diǎn)擊進(jìn)入跳轉(zhuǎn)頁(yè)面打?。?,這就是因?yàn)閡ni.$on還沒(méi)有定義完成,因此也就沒(méi)有接收到$emit傳遞的數(shù)據(jù)(之前都沒(méi)有打開過(guò)的頁(yè)面怎么可能定義好啊喂!),下面提供兩種解決方法

    第一次跳轉(zhuǎn)不生效寫法

    //首頁(yè)
    uni.$emit('richtext', content)
    //跳轉(zhuǎn)頁(yè)面
    	uni.$on('richtext', (data) => {
    				console.log(data);		
    			})

? ? ? ? 解決辦法(1):嵌套寫法

//在首頁(yè)中

uni.$on('richtext1', function() {
					uni.$emit('richtext', content)

				})
//在要跳轉(zhuǎn)入的頁(yè)面中

uni.$on('richtext', (data) => {
				console.log(data);
			})
			uni.$emit('richtext1')

? ? ? ? 解決辦法(2):用定時(shí)器延遲$emit的使用文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-632050.html

//首頁(yè)
setTimeout(()=>{
					uni.$emit('richtext', content)
				},300)
//跳轉(zhuǎn)頁(yè)面
	uni.$on('richtext', (data) => {
				console.log(data);		
			})

總之有遇到這個(gè)問(wèn)題的一般是用的navigateTo帶參數(shù)去跳轉(zhuǎn)頁(yè)面,后面稍微查了一下有兩個(gè)跳轉(zhuǎn)是可以正常用$emit和$on去傳值的,不會(huì)出這么多幺蛾子 1.uni.switchTab, 2.uni.navigateBack

上文這些方法都是自己有試過(guò)的,心得就是this指向還是得多加理解 最后就是一定要記得在離開頁(yè)面后移除監(jiān)聽事件?。?/h2>
//跳轉(zhuǎn)的頁(yè)面中
onUnload() {
			uni.$off('data')
		},

到了這里,關(guān)于uniapp在不同頁(yè)面間跳轉(zhuǎn)時(shí)使用$emit和$on傳值無(wú)效問(wèn)題(記錄坑)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微信小程序頁(yè)面跳轉(zhuǎn)時(shí)URL獲取不到參數(shù)

    原因: 在跳轉(zhuǎn)的url參數(shù)中添加了包含特殊字符?的情況下 ,會(huì)出現(xiàn)參數(shù)丟失的情況 1.最近在小程序開發(fā)過(guò)程中,發(fā)現(xiàn)之前可用的某個(gè)功能字段展示為了undefined,后來(lái)查看參數(shù)發(fā)現(xiàn) 頁(yè)面跳轉(zhuǎn)時(shí)參數(shù)丟失了 導(dǎo)致的 此時(shí)獲取到的參數(shù)都是正常的,在上線一段時(shí)間后,其它同學(xué)在 圖

    2024年02月11日
    瀏覽(21)
  • Vue3 - 實(shí)現(xiàn)路由 “新開一頁(yè)“ 進(jìn)行頁(yè)面跳轉(zhuǎn)功能,Router 路由跳轉(zhuǎn)時(shí)在新窗口打開頁(yè)面(網(wǎng)站跳轉(zhuǎn)頁(yè)面時(shí)瀏覽器新開頁(yè)簽打開網(wǎng)頁(yè),支持在頁(yè)面、純 js/ts 文件中使用,詳細(xì)示例代碼教程)

    Vue3 - 實(shí)現(xiàn)路由 “新開一頁(yè)“ 進(jìn)行頁(yè)面跳轉(zhuǎn)功能,Router 路由跳轉(zhuǎn)時(shí)在新窗口打開頁(yè)面(網(wǎng)站跳轉(zhuǎn)頁(yè)面時(shí)瀏覽器新開頁(yè)簽打開網(wǎng)頁(yè),支持在頁(yè)面、純 js/ts 文件中使用,詳細(xì)示例代碼教程)

    網(wǎng)上這方面教程很少,本文提供多種解決方案,適用于任何場(chǎng)景。 本文 實(shí)現(xiàn)了在 vue3 項(xiàng)目開發(fā)中,當(dāng)頁(yè)面跳轉(zhuǎn)時(shí)瀏覽器打開新窗口(新頁(yè)簽)跳轉(zhuǎn),Router 路由跳轉(zhuǎn)并新開一頁(yè)教程, 無(wú)論您是在普通頁(yè)面、純 js/ts 文件中,都可以使用, 如下圖所示,當(dāng)執(zhí)行路由跳轉(zhuǎn)時(shí)瀏覽器

    2024年02月03日
    瀏覽(32)
  • Vue 解決route-link路由跳轉(zhuǎn)時(shí)頁(yè)面不刷新問(wèn)題

    1.分析 在使用route-link跳轉(zhuǎn)路由時(shí),每次跳轉(zhuǎn),頁(yè)面都不會(huì)刷新。是因?yàn)槁酚商D(zhuǎn)并非頁(yè)面刷新,而我們獲取數(shù)據(jù)的方法都是寫在created鉤子函數(shù)中,所以,created并不會(huì)每次都執(zhí)行,從而導(dǎo)致頁(yè)面數(shù)據(jù)沒(méi)有刷新。 2.解決方法 在router-view標(biāo)簽中加入:key=\\\"$route.fullPath\\\"即可

    2024年02月11日
    瀏覽(25)
  • [uniapp頁(yè)面路由跳轉(zhuǎn)]詳細(xì)講解uniapp中使用標(biāo)簽和的api完成頁(yè)面跳轉(zhuǎn)使用方法 代碼注釋

    Uniapp是一款基于Vue.js的跨平臺(tái)開發(fā)框架,允許開發(fā)者使用同一套代碼構(gòu)建多個(gè)平臺(tái)的應(yīng)用程序,包括iOS、Android、Web、微信小程序、支付寶小程序、百度小程序、頭條小程序等。在Uniapp中,頁(yè)面跳轉(zhuǎn)是非常重要的功能之一,本文將詳細(xì)介紹Uniapp中頁(yè)面跳轉(zhuǎn)的各種標(biāo)簽和API的使用

    2024年02月20日
    瀏覽(21)
  • uniapp小程序路由跳轉(zhuǎn),使用uni.navigateBack方法,實(shí)現(xiàn)頁(yè)面返回上一頁(yè)

    在小程序中uni.navigateTo和uni.redirectTo是通過(guò)路由拼接的方式傳參 uni.navigateBack() 是一個(gè)用于在uni-app中進(jìn)行頁(yè)面后退操作的API。它可以讓你返回到上一個(gè)頁(yè)面。在給定的示例中,uni.navigateBack() 被調(diào)用并傳入了一個(gè)對(duì)象作為參數(shù)。該對(duì)象具有一個(gè)屬性 delta,用于指定要后退的頁(yè)面

    2024年04月28日
    瀏覽(23)
  • 微信小程序跳轉(zhuǎn)頁(yè)面的不同方法

    微信小程序如何進(jìn)行頁(yè)面切換呢? 1.對(duì)于tabbar頁(yè)面的跳轉(zhuǎn) (若不明白tabbar可自行百度) 使用 switchTab 進(jìn)行跳轉(zhuǎn) 在wxml中輸入 navigator url=\\\"/pages/message/message\\\" open-type=\\\"switchTab\\\"非tabbar頁(yè)面的跳轉(zhuǎn)/navigator 其中/pages/message/message是跳轉(zhuǎn)的地址,跳轉(zhuǎn)方式是switchTab 2.對(duì)于非tabbar頁(yè)面的跳轉(zhuǎn)

    2024年02月15日
    瀏覽(12)
  • Flutter 應(yīng)用間跳轉(zhuǎn)應(yīng)用,實(shí)現(xiàn)喚起第三方App

    最近因?yàn)楣ぷ餍枨?,做了?yīng)用間跳轉(zhuǎn)應(yīng)用,因?yàn)槭且粋€(gè)flutter新手,所以在工作之余隨便總結(jié)記錄一下。 1.使用第三方用戶登錄,跳轉(zhuǎn)到需授權(quán)的App。如QQ登錄,微信登錄等。需要用戶授權(quán),還需要\\\"返回到調(diào)用的程序,同時(shí)返回授權(quán)的用戶名、密碼\\\"。 2.應(yīng)用程序推廣,跳轉(zhuǎn)到

    2024年02月05日
    瀏覽(95)
  • 【HarmonyOS】服務(wù)卡片 API6 JSUI跳轉(zhuǎn)不同頁(yè)面

    【HarmonyOS】服務(wù)卡片 API6 JSUI跳轉(zhuǎn)不同頁(yè)面

    【引言】 “JS卡片支持為組件設(shè)置action,包括router事件和message事件,其中router事件用于應(yīng)用跳。若設(shè)置router事件,則action屬性值為\\\"router\\\";abilityName為卡片提供方應(yīng)用的跳轉(zhuǎn)目標(biāo)Ability名;params中的值按需填寫,其值在使用時(shí)通過(guò)intent.getStringParam(\\\"params\\\")獲取即可;”這一段是

    2024年02月12日
    瀏覽(19)
  • 【HarmonyOS】服務(wù)卡片 API6 JSUI跳轉(zhuǎn)不同頁(yè)面并攜帶參數(shù)

    【HarmonyOS】服務(wù)卡片 API6 JSUI跳轉(zhuǎn)不同頁(yè)面并攜帶參數(shù)

    ?【】 服務(wù)卡片、卡片跳轉(zhuǎn)不同頁(yè)面、卡片跳轉(zhuǎn)頁(yè)面攜帶參數(shù) 【寫在前面】 ? ? ? ? ??本篇文章主要介紹開發(fā)服務(wù)卡片時(shí),如何實(shí)現(xiàn)卡片點(diǎn)擊跳轉(zhuǎn)不同頁(yè)面,并攜帶動(dòng)態(tài)參數(shù)到j(luò)s頁(yè)面。在此篇文章“服務(wù)卡片 API6 JSUI跳轉(zhuǎn)不同頁(yè)面”中說(shuō)明了如果跳轉(zhuǎn)不同頁(yè)面,這里在

    2024年02月06日
    瀏覽(17)
  • uniapp頁(yè)面跳轉(zhuǎn)的幾種方式

    uniapp頁(yè)面跳轉(zhuǎn)的幾種方式

    定義:保留當(dāng)前頁(yè)面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個(gè)頁(yè)面,使用uni.navigateBack可以返回到原頁(yè)面。 使用: 定義:可以關(guān)閉當(dāng)前界面并跳轉(zhuǎn)到其他的非tabbar界面(可帶參數(shù)) 使用: 定義:關(guān)閉所有頁(yè)面,打開到應(yīng)用內(nèi)的某個(gè)頁(yè)面(可帶參數(shù)) 使用: 定義:跳轉(zhuǎn)到 tabBar 頁(yè)面,并關(guān)閉其

    2024年02月01日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包