利用微信開放標簽<wx-open-launch-weapp>在H5中跳轉微信小程序報錯完美的解決方案

一、報錯:

[WXTAG]?[JSCORE]?The?slot?<template>?or?<script?type="text/wxtag-template"> of <wx-open-launch-weapp> is missing

二、源碼

官方源代碼如下,<script type="text/wxtag-template"></script > 這段代碼,網上也有用?template 標簽的。

<wx-open-launch-weappid="launch-btn"appid="wx12345678"path="pages/home/index?user=123&action=abc"
><script type="text/wxtag-template"><style>.btn { padding: 12px }</style><button class="btn">打開小程序</button></script>
</wx-open-launch-weapp>
<script>var btn = document.getElementById('launch-btn');btn.addEventListener('launch', function (e) {console.log('success');});btn.addEventListener('error', function (e) {console.log('fail', e.detail);});
</script>

當我直接在Vue3中用上邊代碼運行會報錯:

[Vue warn]: Template compilation error: Tags with side effect (<script> and <style>) are ignored in client component templates.

報錯原因:

這個報錯信息通常出現在使用客戶端渲染的前端框架中,當你在組件中使用了<script><style>標簽,并且這些標簽帶有副作用時。

報錯解釋:

在客戶端渲染的前端框架中,組件通常被視為無副作用的函數,這意味著組件的渲染不應該有任何副作用,例如修改全局狀態或外部資源。<script><style>標簽如果用于注入JavaScript或CSS,可能會導致副作用。

三、解決思路

其實官方給的代碼樣例,我們是不能直接用在Vue中的,往往這樣的?template?標簽直接給編譯沒有了。

所以我們考慮用動態生成組件的辦法來,生成標簽,就可以解決這個問題了,到目前為止,這是我找到的最好的解決方案。

替換:

<script>// JS CODE HERE
</script>

通過以下方式:

<component :is="'script'">// JS Here
</component>

這里我試了??template?script 這兩個標簽動態生成,此時會報如下錯誤:

[WXTAG]?[JSCORE]?The?slot?<template>?or?<script?type="text/wxtag-template"> of <wx-open-launch-weapp> is missing

是因為?script 標簽還有個 type="text/wxtag-template" 屬性導致的,如果我們將這個type屬性也動態生成好,不就可以解決問題了。

<wx-open-launch-weappid="launch-btn"appid=""path="pages/index/index"
><component :is="'script'" v-bind="{type:'text/wxtag-template'}"><div>測試打開小程序</div></component>
</wx-open-launch-weapp>

果然完美解決問題~~~ 親測親測~~~~ 坑哭了~~~~

四、總結

主要有兩個原因導致,第一個Vue 中的?template 標簽和微信官方要求template標簽不是一個東西。第二個Vue中?script 標簽 不能隨便在視圖部分插入并破壞屬性。基于以上問題我們可以通過動態生成組件標簽的方案來解決。

組件(Component)是 Vue.js 最強大的功能之一。組件可以擴展 HTML 元素,封裝可重用的代碼。在較高層面上,組件是自定義元素,Vue.js 的編譯器為它添加特殊功能。在有些情況下,組件也可以是原生 HTML 元素的形式,以?is?特性擴展。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37955.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37955.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37955.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

美團外賣搜索基于Elasticsearch的優化實踐--圖文解析

美團外賣搜索基于Elasticsearch的優化實踐–圖文解析 前言 美團在外賣搜索業務場景中大規模地使用了 Elasticsearch 作為底層檢索引擎&#xff0c;隨著業務量越來越大&#xff0c;檢索速度變慢了&#xff0c;CPU快累趴了&#xff0c;所以要進行優化。經過檢測&#xff0c;發現…

gcop:簡化 Git 提交流程的高效助手 | 一鍵生成 commit message

&#x1f496; 大家好&#xff0c;我是Zeeland。Tags: 大模型創業、LangChain Top Contributor、算法工程師、Promptulate founder、Python開發者。&#x1f4e3; 個人說明書&#xff1a;Zeeland&#x1f4e3; 個人網站&#xff1a;https://me.zeeland.cn/&#x1f4da; Github…

[SAP ABAP] 數據字典

ABAP數據字典是定義和管理數據庫對象的工具 系統的所有全局數據類型以及數據庫表結構等都需要在數據字典中創建和維護(數據字典中的對象對所有ABAP程序都是全局的) 通過數據字典&#xff0c;我們可以把數據庫對象管理好&#xff0c;后續才能順利的進行功能開發&#xff0c;SA…

華為面試題及答案——大數據

(1)namenode內存滿了,如何進行擴容,調什么參數。 1. 增加 NameNode 的內存 在 hadoop-env.sh 文件中,可以增加 JVM 分配給 NameNode 的內存。通常是在 HADOOP_NAMENODE_OPTS 中增加 -Xmx 參數來增加最大堆內存。 export HADOOP_NAMENODE_OPTS="-Xmx8g -Xms4g ${HA…

集合,Collection接口

可動態保存任意多個對象&#xff0c;使用比較方便 提供了一系列方便操作對象的方法&#xff1a;add&#xff0c;remove&#xff0c;set&#xff0c;get等 使用集合添加刪除新元素&#xff0c;代碼簡潔明了 單列集合 多列集合 Collection接口 常用方法 List list new Arra…

設計模式詳解(一)——策略模式

策略模式&#xff08;Strategy Pattern&#xff09;是一種行為型的設計模式&#xff0c;它允許你定義一系列算法&#xff0c;然后將它們封裝起來&#xff0c;使它們可以相互替換。這樣做的好處是&#xff0c;你可以動態地選擇要使用的算法&#xff0c;而不必在運行時進行檢查或…

多媒體基礎

筆者按&#xff1a; 昨日復習的信息網絡安全約莫是掛了&#xff0c;常言道&#xff1a;知恥而后勇。誠如斯言 于是決心多媒體是不能再掛了&#xff0c;不然直接變成xxx之流&#xff0c;自增笑耳 語雀鏈接&#xff1a;多媒體基礎 一.多媒體計算機概述 媒體&#xff1a;承載信息…

動手學深度學習(Pytorch版)代碼實踐 -卷積神經網絡-21多輸入多輸出通道

21多輸入多輸出通道 import torch from d2l import torch as d2ldef corr2d(X, K):"""計算二維互相關運算"""h, w K.shapeY torch.zeros((X.shape[0] - h 1, X.shape[1] - w 1))for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i,…

go語言DAY7 字典Map 指針 結構體 函數

Go中Map底層原理剖析_go map底層實現-CSDN博客 目錄 Map 鍵值對key,value 注意&#xff1a; map唯一確定的key值通過哈希運算得出哈希值 一、 map的聲明及初始化&#xff1a; 二、 map的增刪改查操作&#xff1a; 三、 map的賦值操作與切片對比&#xff1a; 四、 通用所有…

[leetcode hot 150]第一百二十二題,買賣股票的最佳時機Ⅱ

題目&#xff1a; 給你一個整數數組 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的價格。 在每一天&#xff0c;你可以決定是否購買和/或出售股票。你在任何時候 最多 只能持有 一股 股票。你也可以先購買&#xff0c;然后在 同一天 出售。 返回 你能獲得的 最大…

【C++】初識C++(一)

一.什么是C C語言是結構化和模塊化的語言&#xff0c;適合處理較小規模的程序。對于復雜的問題&#xff0c;規模較大的程序&#xff0c;需要高度 的抽象和建模時&#xff0c;C語言則不合適。為了解決軟件危機&#xff0c; 20世紀80年代&#xff0c; 計算機界提出了OOP(object o…

圖形處理單元(GPU)在現代計算中的應用與挑戰(研究論文框架)

摘要:隨著高性能計算需求的日益增長,圖形處理單元(GPU)已從專業的圖形渲染處理器轉變為具有高性能并行處理能力的多功能計算平臺。本文將探討GPU的核心優勢、編程模型、在不同領域的應用以及面臨的挑戰和限制。此外,還將討論GPU技術的未來發展趨勢和潛在的研究機會。 關鍵…

mongodb 查詢語句學習筆記

基礎查詢 正則查詢 {status: A,$or: [{ qty: { $lt: 30 } }, { item: { $regex: ^p } }] }AND 查詢 { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" }OR 查詢 { $or: [ { status: "A" }, { qty: { $lt: 30 } …

2024年機動車簽字授權人題庫,助你沖刺!絕對不會讓你后悔!

61.&#xff08;&#xff09;使汽車按駕駛人選定的方向行駛。 A.傳動系統 B.行駛系統 C.轉向系統 D.制動系統 答案&#xff1a;C 62.&#xff08;&#xff09;使汽車各總成及部件安裝在適當的位置&#xff0c;對全車起支承作用以保證汽車正常行駛。 A.傳動系統 B.行駛系…

01.計算機圖形學概述

01.計算機圖形學概述 從技術的角度上看&#xff0c;什么是一個好的畫面&#xff1f; 直接看這個畫面是不是足夠亮&#xff0c;這體現了渲染中的一個技術叫全局光照。 應用范圍 游戲&#xff08; Video Games&#xff09;電影/特效&#xff08; Movies&#xff09;動漫/動畫&…

如何讓Linux系統變得更安全?

本文嘗試從linux安全加固、漏洞利用及防御措施、安全意識三個方面思考如何讓linux系統變得更加安全. 一、linux常見安全加固操作 對Linux系統進行詳細的安全加固操作,可以從多個方面進行,包括系統更新和補丁管理、用戶和權限管理、網絡安全配置、文件和系統安全、日志和審計…

Qt代碼分析

要使用代碼分析工具&#xff0c;請在Analyze菜單或(Start Debugging of Startup Project)按鈕的下拉菜單中選擇它。當您處于調試模式時&#xff0c;您可以通過在調試器工具欄上的菜單中選擇工具來切換工具。 您可以將調試模式下的視圖拖放到屏幕上的新位置。意見的大小和立場將…

c++關鍵字default,delete

文章目錄 概述defaultdelete 小結 概述 在看一些開源項目的源碼的時候&#xff0c;經常會看到default和delete。這2個關鍵字究竟什么意思呢&#xff1f;這篇文章就來一點一點拆解下。 default 默認構造函數、拷貝構造函數、移動構造函數、拷貝賦值運算符、移動賦值運算符和析…

HDFS學習

3.5 HDFS存儲原理 3.5.1 冗余數據保存 作為一個分布式文件系統&#xff0c;為了保證系統的容錯性和可用性&#xff0c;HDFS采用了多副本方式對數據進行冗余存儲&#xff0c;通常一個數據塊的多個副本會被分布到不同的數據節點上。 如圖所示&#xff0c;數據塊1被分別存放到…

石油化工廠為什么要用專業防爆手機?

防爆手機之所以必須使用專業設計的產品&#xff0c;主要是出于安全考慮&#xff0c;以防止在易燃易爆環境中因手機使用不當引發爆炸事故。以下幾點詳細解釋了使用專業化工防爆手機的必要性&#xff1a; 本質安全設計&#xff1a;頂堅專業防爆手機采用了本質安全&#xff08;本安…