经过对逻辑层的封装,让原生小程序使用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👍。数组