Taro 原生微信小程式轉taro

2022-07-15 13:54:10 字數 4509 閱讀 2884

$ taro convert

即可完成轉換。轉換後的**儲存在根目錄下的taroconvert資料夾下。你需要定位到taroconvert目錄執行npm install命令之後就可以使用taro build命令編譯到對應平台的**。

假設已有乙個轉換後檔案如下:

import  from

'@tarojs/components

'import taro

from

'@tarojs/taro

'from''

import

'./index.scss''

page')

class

_c extends taro.component

componentwillmount(e)

componentdidshow() ,

success: res =>)

return

} that.setdata()}})

} config =

render() = this

.state

return

(

"container

">

"top-sec

">

"a-row

">

"label

">物流單號

"text

">

"a-row

">

"label

">物流公司

"text

">

"sec-wrap

">

"details-info

">

"line-box

" />>

"dot">

classname="

active-dot

"hidden=

>

"yuan-red

" />

classname="

default-dot

"hidden=

/>

"info

">

"date-box

">

"text

">

) })}

) }

}export

default _c

轉換後的this.setdata的 api 相當於小程式的this.setdata的 polyfill,他和this.setstate最大的區別就在於,this.setdata之後data的資料是同步更新,而渲染是非同步更新,而setstate兩者都是非同步的。

this.datathis.properties相當於 taro 的this.statethis.props的 alias,當它們的資料更新時,對應的stateprops也會同步更新。

taro 會將原始檔案的生命週期鉤子函式轉換為 taro 的生命週期,完整對應關係如下:

page.onload

componentwillmount

onshow

componentdidshow

onhide

componentdidhide

onready

componentdidmount

onunload

componentwillunmount

onerror

componentdidcatcherror

componentwillmount

component.created

componentwillmount

attached

componentdidmount

ready

componentdidmount

detached

componentwillunmount

moved

保留這個錯誤通常是由於原始**的初始data中沒有對應的資料,後來通過this.setdata補充資料造成的。在 taro 中推薦不管是state(data)還是properties(props)都要設定乙個預設值。你可以在類構造器或修改原始**提供乙個預設值解決這個問題,這也應該是編寫**的最佳實踐。

這是由於wxparse的原始碼使用了乙個不存在的template宣告造成的。你可以修改wxparse的原始碼檔案wxparse.wxml134 行到 207 行:

"wxparse1

">

if="

}">

if="

}">

"default

" size="

mini

">

for="

}" wx:for-item="

item

" wx:key="">

is="

wxparse0

" data="

}" />

"}">

class="

} wxparse-li

" style="

}">

class="

} wxparse-li-inner

">

class="

} wxparse-li-text

">

class="

} wxparse-li-circle

">

class="

} wxparse-li-text

">

for="

}" wx:for-item="

item

" wx:key="">

is="

wxparse0

" data="

}" />

"}">

is="

wxparsevideo

" data="

}" />

"}">

is="

wxparseimg

" data="

}" />

"}">

"wxparsetagatap

"class="

wxparse-inline } wxparse-}

" data-src="

}" style="

}">

for="

}" wx:for-item="

item

" wx:key="">

is="

wxparse0

" data="

}" />

"}">

class="

} wxparse-}

" style="

}">

for="

}" wx:for-item="

item

" wx:key="">

is="

wxparse0

" data="

}" />

"}">

is="

wxparsebr

">

"}">

class="

} wxparse-}

" style="

}">

for="

}" wx:for-item="

item

" wx:key="">

is="

wxparse0

" data="

}" />

else

class="

} wxparse-} wxparse-}

" style="

}">

for="

}" wx:for-item="

item

" wx:key="">

is="

wxparse0

" data="

}" />

"}">

is="

wxemojiview

" data="

}" />

的模板內所有修改為再執行taro convert即可。這樣修改之後還會取消原來wxparse只能處理 11 級 html 巢狀的問題,理論上記憶體不爆棧可以處理無限級 html 巢狀。

Taro微信小程式

這裡預設你已經建立好了乙個專案,如果你還沒有建立好乙個專案,去看另外一篇文章taro環境搭建及建立乙個專案 在vscode終端中使用 cnpm install 安裝依賴編譯過程中可能會出現錯誤 解決方案 問題根本 這通常是因為執行npm安裝後環境發生了變化。執行 npm重建節點sass 強制 來為當...

微信小程式 原生元件

1.原生元件 camera canvas live player live pusher map textarea video input 僅在focus時表現為原生元件 2.原生元件的使用限制 1 原生元件的層級是最高的 a.無論設定 z index 為多少,都無法蓋在原生元件上 b.後插入的原生...

Taro全實踐 Taro在微信小程式中的生命週期

一 taro的本身生命週期 生命週期 componentwillmount componentdidmount componentdidshow componentdidhide componentdidcatcherror componentdidnotfound shouldcomponentu...