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

微信小程序--Taro框架實(shí)際開(kāi)發(fā)中的問(wèn)題匯總

這篇具有很好參考價(jià)值的文章主要介紹了微信小程序--Taro框架實(shí)際開(kāi)發(fā)中的問(wèn)題匯總。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言:微信小程序相信大家都不陌生,目前小程序開(kāi)發(fā)主流的框架有微信原生開(kāi)發(fā)uni-app,以及今天的重點(diǎn)Taro。編者自身小程序開(kāi)發(fā)經(jīng)驗(yàn)也不多,僅針對(duì)自身在小程序開(kāi)發(fā)中的問(wèn)題做一次匯總,望更多像我一樣的小白少走 一點(diǎn)彎路。

注意:本篇博客中小程序開(kāi)發(fā)基于Taro框架,使用React + Hooks,有興趣可以點(diǎn)擊鏈接了解學(xué)習(xí)!

一、Taro簡(jiǎn)單介紹

1.1 安裝

具體步驟參考Taro安裝,官網(wǎng)上都有詳細(xì)的過(guò)程,這里就不多說(shuō)了。

1.2 目錄介紹

安裝好之后,可以看到如下的目錄結(jié)構(gòu),我這里使用了typescript,后綴變?yōu)榱藅s.

taro usedidshow,前端,微信小程序,reactjs
目錄結(jié)構(gòu)介紹:

├── dist                        編譯結(jié)果目錄
|
├── config                      項(xiàng)目編譯配置目錄
|   ├── index.js                默認(rèn)配置
|   ├── dev.js                  開(kāi)發(fā)環(huán)境配置
|   └── prod.js                 生產(chǎn)環(huán)境配置
|
├── src                         源碼目錄
|   ├── pages                   頁(yè)面文件目錄
|   |   └── index               index 頁(yè)面目錄
|   |       ├── index.js        index 頁(yè)面邏輯
|   |       ├── index.css       index 頁(yè)面樣式
|   |       └── index.config.js index 頁(yè)面配置
|   |
|   ├── app.js                  項(xiàng)目入口文件
|   ├── app.css                 項(xiàng)目總通用樣式
|   └── app.config.js           項(xiàng)目入口配置
|
├── project.config.json         微信小程序項(xiàng)目配置 project.config.json
├── project.tt.json             字節(jié)跳動(dòng)小程序項(xiàng)目配置 project.tt.json
├── project.swan.json           百度小程序項(xiàng)目配置 project.swan.json
├── project.qq.json             QQ 小程序項(xiàng)目配置 project.qq.json
|
├── babel.config.js             Babel 配置
├── tsconfig.json               TypeScript 配置
├── .eslintrc                   ESLint 配置
|
└── package.json

1.3 tabBar配置

  • tabBar就是我們?cè)谛〕绦虻撞靠吹降牟藛螜?,一般情況下數(shù)量不得少于2個(gè),不超過(guò)5個(gè)。
    在Taro中,tabBar的配置是在src/app.config.ts中進(jìn)行。

taro usedidshow,前端,微信小程序,reactjs

  • 在Taro中,每次新建一個(gè)頁(yè)面時(shí)都需要在src/app.config.ts中的pages中進(jìn)行注冊(cè),否則不生效,

taro usedidshow,前端,微信小程序,reactjs
到這里,你就可以正式開(kāi)始你的小程序開(kāi)發(fā)之旅啦!

二、踩坑之旅

下面總結(jié)一下我在小程序開(kāi)發(fā)中遇到的一些問(wèn)題吧,希望對(duì)你們有所幫助,也記錄下自己艱辛的心路歷程。

2.1 小程序嵌套H5頁(yè)面

  • 對(duì)于沒(méi)接觸過(guò)過(guò)小程序的小白們來(lái)說(shuō),可能覺(jué)得居然可以這樣操作,但是的確可以這樣操作。
    小程序中提供了WebView組件,只需要提供H5頁(yè)面的地址就可以完成在小程序中嵌套H5頁(yè)面。

web-view 組件是一個(gè)可以用來(lái)承載網(wǎng)頁(yè)的容器,會(huì)自動(dòng)鋪滿整個(gè)小程序頁(yè)面。個(gè)人類型與海外類型的小程序暫不支持使用。

import { WebView } from '@tarojs/components'

return (
    <WebView src="H5頁(yè)面地址"></WebView>
)

webview組件的優(yōu)缺點(diǎn)同樣顯著,在實(shí)際開(kāi)發(fā)中需要注意是否需要使用。

  • 當(dāng)小程序中使用webview嵌套了H5頁(yè)面時(shí),可以使用微信原生API和小程序進(jìn)行交互,微信webview組件,但是要注意,只能使用提供范圍內(nèi)的API,例如小程序和H5之間的跳轉(zhuǎn)傳參。

import wx from 'weixin-js-sdk'

//H5跳轉(zhuǎn)到小程序 
const lunchToWarnInfo = (content: any) => {
    // @ts-ignore
    wx.miniProgram.navigateTo({
    //注意:此處小程序的頁(yè)面路徑必須以'/'開(kāi)頭,否則無(wú)效
      url: `小程序的頁(yè)面路徑?參數(shù)名=值`,
    })
  }
 
//小程序接收參數(shù)
import Taro, { useDidShow} from '@tarojs/taro'

useDidShow(() => {
   let router = Taro.getCurrentInstance().router?.params?.參數(shù)名
   console.log(router)
 })

//小程序跳轉(zhuǎn)到H5頁(yè)面’
import { WebView } from '@tarojs/components'

//小程序到H5傳參是通過(guò)webview添加后綴的形式  eg:?參數(shù)名=值

return (
    <WebView src="H5頁(yè)面地址?參數(shù)名=值"></WebView>
)

//H5接收參數(shù)
import { useLocation } from 'react-router'

const location = useLocation()
const lonLat = location.search  //lonLat就是小程序傳來(lái)的參數(shù),自行格式化就能拿到

2.2 小程序間的跳轉(zhuǎn)及傳參

小程序之間的跳轉(zhuǎn)傳參就簡(jiǎn)單多了,Taro有一套API供選擇,但是不同的API使用的場(chǎng)景也不同,具體的可以點(diǎn)擊Taro路由跳轉(zhuǎn)查看。

下面簡(jiǎn)單介紹一下如何傳參以及接收參數(shù)吧,以navigateTo為例。

  • 傳參
Taro.navigateTo({
      //注意:這里的路徑也是以"/"開(kāi)頭,否則無(wú)效
      url: `/pages//index?id=1`,
})
  • 接收參數(shù)
useEffect(() => {
   let id= Taro.getCurrentInstance().router?.params.id
   console.log(id,'id')
 }, [])

//或者Taro也有專門的HOOKS用來(lái)接收參數(shù)
useEffect(() => {
	//這里的router相當(dāng)于 Taro.getCurrentInstance().router
   const router = useRouter()
}, [])

useRouter及其它hooks介紹請(qǐng)戳這兒!

2.3 小程序回退傳參

就是小程序在點(diǎn)擊或者觸發(fā)返回上一級(jí)時(shí)傳參,具體使用場(chǎng)景比如在A頁(yè)面跳轉(zhuǎn)到B頁(yè)面,在B頁(yè)面選擇地區(qū)信息然后返回到A頁(yè)面,并且將選擇的地區(qū)信息傳給A頁(yè)面用以展示。

思路:小程序路由中navigateBack可以控制返回上一級(jí)或者上上級(jí),這時(shí)需要引入一個(gè)頁(yè)面棧的概念,簡(jiǎn)單來(lái)說(shuō)那就是小程序發(fā)生路由跳轉(zhuǎn)時(shí),它會(huì)把跳轉(zhuǎn)的所有頁(yè)面記錄下來(lái),放在一個(gè)數(shù)組里。我們可以通過(guò)控制這個(gè)數(shù)組來(lái)進(jìn)行傳參。

//pages里就包括發(fā)生跳轉(zhuǎn)的頁(yè)面對(duì)象,是一個(gè)數(shù)組
const pages = Taro.getCurrentPages()
//formPage控制數(shù)組里的任意一個(gè)頁(yè)面對(duì)象
const formPage = pages[pages.length - 2]
formPage.id= 1

//delta=1,表示回退一層
Taro.navigateBack({
  delta: 1,
})

//接收參數(shù)參考上述 2.2

2.4 小程序下拉刷新/上拉加載

這個(gè)大家應(yīng)該不陌生吧,就是在小程序中向上或向下拖動(dòng)頁(yè)面,起到刷新數(shù)據(jù)和加載更多數(shù)據(jù)的功能。

  • 下拉刷新/上拉加載
    需要在 src/app.config.ts 中的window中配置:
window: {
    enablePullDownRefresh: true,
    onReachBottomDistance: 50,  //下拉距離
},

思路:頁(yè)面中監(jiān)聽(tīng)下拉動(dòng)作,處理數(shù)據(jù),完畢后停止下拉。

import Taro, { usePullDownRefresh,useReachBottom } from '@tarojs/taro'

usePullDownRefresh(() => {
 	console.log('下拉了,日歷')
 	//處理數(shù)據(jù)
  	Taro.stopPullDownRefresh()
})

useReachBottom(() => {
  console.log('上拉了')
  //數(shù)據(jù)處理
})

2.5 分享好友/朋友圈

點(diǎn)擊小程序右上方的三個(gè)點(diǎn),即可分享到好友/朋友圈.

  • 分享好友

在頁(yè)面的index.config.ts中加上 enableShareAppMessage: true,

 //分享給好友
import Taro, { useShareAppMessage } from '@tarojs/taro'

/*
  分享好友有兩種場(chǎng)景:1,點(diǎn)擊右上角的三個(gè)點(diǎn)->點(diǎn)擊分享好友;  type:button
  					2,點(diǎn)擊頁(yè)面內(nèi)的轉(zhuǎn)發(fā)按鈕  type:menu

*/

useShareAppMessage((res) => {
  if (res.from === 'button') {
    // 來(lái)自頁(yè)面內(nèi)轉(zhuǎn)發(fā)按鈕
    console.log(res.target)
  }
  if(res.from === 'menu'){
    //來(lái)自右上角的分享好友
    console.log(res.target)
  }
  
  return {
    title: '標(biāo)題',
    path: '/pages/index/index',
  }
})

需要注意的是:如果分享的頁(yè)面數(shù)據(jù)來(lái)源于上一級(jí),那么分享頁(yè)面之后相當(dāng)于直接訪問(wèn)該頁(yè)面,可能會(huì)出現(xiàn)頁(yè)面空白沒(méi)有數(shù)據(jù)的情況,這時(shí)候就需要在path里帶上參數(shù).

 return {
    title: '標(biāo)題',
    path: '/pages/index/index?id=1',
  }
  • 分享朋友圈

在頁(yè)面的index.config.ts中加上 enableShareTimeline: true,

import Taro, { useShareTimeline} from '@tarojs/taro'

//分享朋友圈
useShareTimeline(() => {
  return {
    title: '標(biāo)題',
    path: '/pages/index/index',
    imageUrl: '',
  }
})

2.6 頁(yè)面轉(zhuǎn)發(fā)分享/長(zhǎng)按圖片識(shí)別

如果想在小程序中分享某個(gè)頁(yè)面給好友,還可以通過(guò)Button來(lái)實(shí)現(xiàn)。 Taro中提供了一些組件,其中就包括Button組件,可以直接調(diào)用小程序API。

  • 頁(yè)面轉(zhuǎn)發(fā)分享

//只需要設(shè)置  openType="share"
<Button
    className="share-img"
    openType="share"
   >
      <Image src={'圖片路徑'} />
</Button>
  • 長(zhǎng)按圖片識(shí)別

Taro中使用Image引入圖片,還可以實(shí)現(xiàn)長(zhǎng)按識(shí)別的功能,如果是二維碼,識(shí)別后可以直接點(diǎn)擊跳轉(zhuǎn)過(guò)去。

//設(shè)置 showMenuByLongpress={true}
<Image src={'圖片路徑'} showMenuByLongpress={true} />

2.7 自定義頂部導(dǎo)航欄

就是去掉小程序自帶的右上角的按鈕,使用場(chǎng)景如,需要在頂部添加背景圖,
只需要在index.config.ts中配置,然后就可以用自定義DOM替代原來(lái)的導(dǎo)航欄。

navigationBarBackgroundColor: '#3E7DF8', //背景色
navigationStyle: 'custom', //自定義導(dǎo)航欄

2.8 彈出授權(quán)框

小程序中很多操作需要用戶授權(quán)后才能夠執(zhí)行,所以要先顯示授權(quán)框,取得用戶的授權(quán)信息后再進(jìn)行后續(xù)操作。例如需要獲取用戶位置信息,先查看用戶是否授權(quán),若未授權(quán),則彈出授權(quán)框。

Taro.getSetting({
  success: function (res) {
    console.log(res.authSetting)
    if(res.authSetting['scope.userLocation']){
    	//用戶授權(quán)過(guò)
    }else{
    	//用戶未授權(quán)過(guò)
    	Taro.authorize({
	        scope: 'scope.userLocation',
	        success: function () {
	          // 用戶已經(jīng)同意小程序使用定位功能
	         Taro.getLocation({
			        type: 'wgs84',
			        success: function (res) {
			           //定位成功,res包括位置信息,lon.lat等
			           console.log('res',res)
			        },
			        fail: function () {
			          //定位失敗
			        },
      		})
        }
      })
    ]
  }
})

2.9 訂閱消息

詳情請(qǐng)點(diǎn)擊小程序訂閱消息,以 長(zhǎng)期訂閱消息為例,制作好模板后,拿到模板id,模板就是當(dāng)訂閱消息發(fā)送到你的微信上的時(shí)候,所要展示的信息及其方式的一種形式。訂閱消息之前需要取得用戶的授權(quán)信息。

//注意:訂閱消息需要用到openid,openid是登錄之后后端返的
Taro.requestSubscribeMessage({
	  //模板id
	  tmplIds: ['模板id'],
	  success: function (res) {
	    Taro.request({
	      url: `訂閱消息的接口`,
	      method: 'POST',
	      timeout: 600000
	    })
	  },
})

2.10 登錄流程

小程序的登錄流程還是比較麻煩的,官方給的流程圖如下: 微信小程序登錄

taro usedidshow,前端,微信小程序,reactjs
流程相信大家都能看懂,但是實(shí)際操作后可能就一頭霧水,編者在這一塊也是一樣,我就根據(jù)實(shí)際的開(kāi)發(fā)總結(jié)下自己的理解,可能會(huì)有所紕漏:

小程序的登錄方式可能有所差異,編者本次小程序中使用的是微信授權(quán)登錄,也可能是手機(jī)號(hào)登錄等;
以微信授權(quán)登錄為例:

/*
	1,檢測(cè)本地是否存有用戶信息;
	2,檢測(cè)登錄態(tài)是否過(guò)期;
	3,如果沒(méi)有用戶信息或者登錄態(tài)過(guò)期則需重新登錄;
	4,點(diǎn)擊授權(quán)登錄按鈕,檢測(cè)用戶是否授權(quán)獲取用戶信息;
	5,若未授權(quán),則調(diào)起用戶信息授權(quán)框;
	6,點(diǎn)擊授權(quán),調(diào)取Taro.login()登錄,發(fā)送請(qǐng)求拿到openId并保存到本地;
	7,獲取用戶信息,保存到本地,展示登錄后的頁(yè)面;
*/

三、總結(jié)

小程序開(kāi)發(fā)中遇到的問(wèn)題遠(yuǎn)不止這些,時(shí)間原因先總結(jié)這么多,以后如果踩到新的坑了會(huì)記錄上去。總體而言,小程序上手還是比較簡(jiǎn)單的,只需要你熟悉Vue/React中的一種,當(dāng)然Uni我暫時(shí)還沒(méi)用過(guò)。
廢話不多說(shuō)了,有問(wèn)題評(píng)論區(qū)交流哈!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-561364.html

到了這里,關(guān)于微信小程序--Taro框架實(shí)際開(kāi)發(fā)中的問(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)文章

  • Taro支持富文本(微信小程序)圖片樣式問(wèn)題及可點(diǎn)擊事件

    Taro支持富文本(微信小程序)圖片樣式問(wèn)題及可點(diǎn)擊事件

    react提供的dangerouslySetInnerHTML即可 這個(gè)屬性相比于其他方案的優(yōu)勢(shì)在于:1. 支持修改富文本樣式? 2. Taro官方屬性,比插件靠譜 使用這個(gè)屬性存在兩個(gè)問(wèn)題需要解決 1、需要解決圖片樣式錯(cuò)亂問(wèn)題 2、圖片點(diǎn)擊可放大 tips: 正常方式無(wú)法綁定事件,樣式設(shè)置不生效 ? 真機(jī)測(cè)試沒(méi)有

    2024年02月10日
    瀏覽(92)
  • taro 支付寶/微信小程序的chooseImage真機(jī)和開(kāi)發(fā)工具上的區(qū)別
  • 微信小程序 開(kāi)發(fā)中的問(wèn)題(simba_wx)

    微信小程序 開(kāi)發(fā)中的問(wèn)題(simba_wx)

    需要先下載 protobufjs-cli 依賴 然后再當(dāng)前目錄下的終端,執(zhí)行以下命令 proto/test.proto proto/test.json :意思是找到當(dāng)前目錄的 proto 文件夾下的 test.proto 文件,將該文件轉(zhuǎn)為 test.json 并將該文件放到 proto 文件夾下 由于收到數(shù)據(jù)是二進(jìn)制的,雖然拿到的 proto 文件的 json 結(jié)構(gòu),但這還

    2023年04月26日
    瀏覽(16)
  • taro(踩坑) npm run dev:weapp 微信小程序開(kāi)發(fā)者工具預(yù)覽報(bào)錯(cuò)

    taro(踩坑) npm run dev:weapp 微信小程序開(kāi)發(fā)者工具預(yù)覽報(bào)錯(cuò)

    控制臺(tái)報(bào)錯(cuò)信息: VM72:9 app.js錯(cuò)誤: ?Error: module \\\'vendors-node_modules_taro_weapp_prebundle_chunk-JUEIR267_js.js\\\' is not defined, require args is \\\'./vendors-node_modules_taro_weapp_prebundle_chunk-JUEIR267_js.js\\\' 環(huán)境: node 版本:v18.16.0 Taro 版本:v3.6.18 vue3 typeScript sass webpack5 解決辦法: webpack5 改為?webpack4 set NOD

    2024年02月03日
    瀏覽(29)
  • 關(guān)于在微信小程序中使用taro + react-hook后銷毀函數(shù)無(wú)法執(zhí)行的問(wèn)題

    關(guān)于在微信小程序中使用taro + react-hook后銷毀函數(shù)無(wú)法執(zhí)行的問(wèn)題

    問(wèn)題: 在 taro中使用navigageTo() 跳轉(zhuǎn)路由后hook中useEffect 的return函數(shù)沒(méi)有執(zhí)行 沒(méi)有執(zhí)行return函數(shù) 框架版本: ?????tarojs:? 3.6? ? ????????????????????????react:? ?18.0? ? 原因: 使用navigateTo() 跳轉(zhuǎn)路由的話并不會(huì)銷毀頁(yè)面和組件,會(huì)加入一個(gè)最大數(shù)量為十層的路由

    2024年01月24日
    瀏覽(30)
  • 【taro react】---- 解決 iOS 真機(jī)微信小程序 Input 密碼框 type 切換會(huì)導(dǎo)致 Input 內(nèi)容丟失問(wèn)題

    1. 問(wèn)題場(chǎng)景 在密碼登陸時(shí),有顯示和隱藏密碼的功能,實(shí)現(xiàn)方式很簡(jiǎn)單,直接對(duì)輸入 input 的 type 進(jìn)行 password 和 text 值進(jìn)行切換,就可以實(shí)現(xiàn)密碼的顯示和隱藏。 2. 實(shí)現(xiàn)代碼 通過(guò)修改 input 的 type 值實(shí)現(xiàn)密碼的顯示和隱藏。 密碼的顯示和隱藏控制圖標(biāo)也是通過(guò) type 值進(jìn)行判斷

    2024年02月03日
    瀏覽(20)
  • 微信小程序+Taro 混編,Taro 使用微信原生 behaviors

    最近有一個(gè)小程序項(xiàng)目,因?yàn)橐恍┰蝽?xiàng)目架構(gòu)選擇了微信小程序原生+Taro 混編的方式進(jìn)行開(kāi)發(fā),在開(kāi)發(fā)的過(guò)程中發(fā)現(xiàn) Taro 不支持使用原生的 behaviors 特性,因?yàn)榛炀幍脑蝽?xiàng)目當(dāng)中已有原生頁(yè)面在使用 behaviors,所以需要一個(gè)方案在不影響其他頁(yè)面的基礎(chǔ)上使 Taro 也能使用這

    2024年02月11日
    瀏覽(24)
  • 使用taro或react框架的,針對(duì)微信小程序隱私協(xié)議的組件封裝,網(wǎng)上找了很久都沒(méi)有相關(guān)模版,只有自己寫(xiě)了一個(gè),現(xiàn)分享給有困難的同伴

    注意:我是使用hooks的,其他可以參考封裝思路大同小異的 首先寫(xiě)一個(gè)PrivacyAgreement.js文件 樣式文件index.scss如下 在需要用到隱私協(xié)議的組件或者api的頁(yè)面里面引用

    2024年02月05日
    瀏覽(34)
  • 【Taro】微信小程序隱私協(xié)議改造

    ?微信要求小程序開(kāi)發(fā)者在2023.9.15日前將小程序中調(diào)用獲取用戶隱私api的接口時(shí),都必須要先讓用戶授權(quán),如果用戶拒絕授權(quán),那么小程序的對(duì)應(yīng)接口或組件將直接禁用。 那么首先,請(qǐng)將微信小程序開(kāi)發(fā)者工具-詳情-本地設(shè)置-基礎(chǔ)調(diào)試庫(kù) 切換至2.33.0以上。低于該調(diào)試庫(kù)會(huì)報(bào)錯(cuò)

    2024年02月09日
    瀏覽(31)
  • 【Taro】微信小程序關(guān)于隱私協(xié)議改造

    【Taro】微信小程序關(guān)于隱私協(xié)議改造

    之前微信剛公布要求整改小程序獲取用戶隱私接口的改造公告那會(huì),Taro還沒(méi)有支持這方面的更新,于是當(dāng)時(shí)就暫時(shí)擱置了一下,后面發(fā)現(xiàn)有人回復(fù)了我的提問(wèn),并且給出了解決方案。按照大佬給出的解決方案試了下,果然可行,所以在此記錄分享一下! 首先,當(dāng)時(shí)的帖子在

    2024年02月07日
    瀏覽(31)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包