經過對邏輯層的封裝,讓原生小程序使用Vue3的Composotion APIhtml
index.wxmlreact
<view>
<view>{{count}}</view>
<button bindtap="add">數字 +1</button>
</view>
複製代碼
index.jsgit
import {Epage, ref, onShowHooks} from 'enhance-weapp'
function useCount() {
const count = ref(0)
const add = () => {
count.value++
}
onShowHooks(() => {
console.log('我是useCount')
})
return {
count,
add
}
}
Epage({
setup() {
onShowHooks(() => {
console.log('我是setup')
})
return useCount()
}
})
複製代碼
流程圖先走一波github
options
對象屬性進行遍歷,對全部的生命週期方法進行裝飾,將生命週期改形成數組結構,並提供相關的hooks方式以調用註冊。setup
函數,拿到其返回值setupData
。options.data
對象副本(若是有的話),使用reactive
將其響應式後保存到this.data$
屬性上。setupData
,將其值直接賦值給this.data$
,響應式解包賦值給this.data
。this.setData(this.data)
,同步數據至渲染層。this.data
副本至this.__oldData__
。watch
監聽this.data$
,響應式觸發後diff this.data$
與this.__oldData__
。this.setData(diffData)
,同步數據至渲染層。以上是核心的實現思路,除此以外還有全局mixins
、生命週期阻塞執行、全局生命週期控制等邏輯,具體能夠去enhance-weapp,看下介紹和源碼。小程序
若是本篇內容對你有幫助,歡迎點贊star👍。數組