提交 be4e86b0 编写于 作者: DCloud-WZF's avatar DCloud-WZF 💬

perf(lifecycle): 优化生命周期示例

上级 795c142a
...@@ -4,8 +4,41 @@ ...@@ -4,8 +4,41 @@
<!-- #endif --> <!-- #endif -->
<view class="page container"> <view class="page container">
<text>page lifecycle 组合式 API</text> <text>page lifecycle 组合式 API</text>
<button class="mt-10" @click="scrollToBottom"> <view class="flex flex-row justify-between mt-10">
scrollToBottom <text>onLoad 触发:</text>
<text>{{ isOnloadTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onPageShow 触发:</text>
<text>{{ isOnPageShowTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onReady 触发:</text>
<text>{{ isOnReadyTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onPullDownRefresh 触发:</text>
<text>{{ isOnPullDownRefreshTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onReachBottom 触发:</text>
<text>{{ isOnReachBottomTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onBackPress 触发:</text>
<text>{{ isOnBackPressTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onPageHide 触发:</text>
<text>{{ isOnPageHideTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onResize 触发:</text>
<text>{{ isOnResizeTriggered }}</text>
</view>
<button class="mt-10" @click="scrollToBottom">scrollToBottom</button>
<button class="mt-10" @click="pullDownRefresh">
trigger pullDownRefresh
</button> </button>
</view> </view>
<!-- #ifdef APP --> <!-- #ifdef APP -->
...@@ -14,67 +47,91 @@ ...@@ -14,67 +47,91 @@
</template> </template>
<script setup lang="uts"> <script setup lang="uts">
import { state, setLifeCycleNum } from '@/store/index.uts' import { state, setLifeCycleNum } from '@/store/index.uts'
type DataInfo = {
const isOnloadTriggered = ref(false)
const isOnPageShowTriggered = ref(false)
const isOnReadyTriggered = ref(false)
const isOnPullDownRefreshTriggered = ref(false)
const isOnPageScrollTriggered = ref(false)
const isOnReachBottomTriggered = ref(false)
const isOnBackPressTriggered = ref(false)
const isOnPageHideTriggered = ref(false)
const isOnResizeTriggered = ref(false)
type DataInfo = {
isScrolled : boolean isScrolled : boolean
} }
const dataInfo = reactive({ const dataInfo = reactive({
isScrolled: false, isScrolled: false,
} as DataInfo) } as DataInfo)
onLoad((_ : OnLoadOptions) => { onLoad((options : OnLoadOptions) => {
console.log('onLoad', options)
isOnloadTriggered.value = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum + 100) setLifeCycleNum(state.lifeCycleNum + 100)
}) })
onPageShow(() => { onPageShow(() => {
isOnPageShowTriggered.value = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum + 10) setLifeCycleNum(state.lifeCycleNum + 10)
}) })
onReady(() => { onReady(() => {
isOnReadyTriggered.value = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum + 10) setLifeCycleNum(state.lifeCycleNum + 10)
}) })
onPullDownRefresh(() => { onPullDownRefresh(() => {
isOnPullDownRefreshTriggered.value = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum + 10) setLifeCycleNum(state.lifeCycleNum + 10)
}) })
onPageScroll((_) => { onPageScroll((e: OnPageScrollOptions) => {
console.log('onPageScroll', e)
isOnPageScrollTriggered.value = true
// 自动化测试 // 自动化测试
dataInfo.isScrolled = true dataInfo.isScrolled = true
}) })
onReachBottom(() => { onReachBottom(() => {
isOnReachBottomTriggered.value = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum + 10) setLifeCycleNum(state.lifeCycleNum + 10)
}) })
onBackPress((_ : OnBackPressOptions) : boolean | null => { onBackPress((options : OnBackPressOptions) : boolean | null => {
console.log('onBackPress', options)
isOnBackPressTriggered.value = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum - 10) setLifeCycleNum(state.lifeCycleNum - 10)
return null return null
}) })
onPageHide(() => { onPageHide(() => {
isOnPageHideTriggered.value = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum - 10) setLifeCycleNum(state.lifeCycleNum - 10)
}) })
onUnload(() => { onUnload(() => {
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum - 100) setLifeCycleNum(state.lifeCycleNum - 100)
}) })
onResize((_) => { onResize((options: OnResizeOptions) => {
console.log('onBackPress', options)
isOnResizeTriggered.value = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum + 10) setLifeCycleNum(state.lifeCycleNum + 10)
}) })
// 自动化测试 // 自动化测试
const pageGetLifeCycleNum = () : number => { const pageGetLifeCycleNum = () : number => {
return state.lifeCycleNum return state.lifeCycleNum
} }
// 自动化测试 // 自动化测试
const pageSetLifeCycleNum = (num : number) => { const pageSetLifeCycleNum = (num : number) => {
setLifeCycleNum(num) setLifeCycleNum(num)
} }
// 自动化测试 // 自动化测试
const pullDownRefresh = () => { const pullDownRefresh = () => {
uni.startPullDownRefresh({ uni.startPullDownRefresh({
success() { success() {
setTimeout(() => { setTimeout(() => {
...@@ -82,25 +139,25 @@ ...@@ -82,25 +139,25 @@
}, 1500) }, 1500)
}, },
}) })
} }
const scrollToBottom = () => { const scrollToBottom = () => {
uni.pageScrollTo({ uni.pageScrollTo({
scrollTop: 2000, scrollTop: 2000,
}) })
} }
defineExpose({ defineExpose({
dataInfo, dataInfo,
pageGetLifeCycleNum, pageGetLifeCycleNum,
pageSetLifeCycleNum, pageSetLifeCycleNum,
pullDownRefresh, pullDownRefresh,
scrollToBottom, scrollToBottom,
}) })
</script> </script>
<style> <style>
.container { .container {
height: 1200px; height: 1200px;
} }
</style> </style>
...@@ -4,7 +4,42 @@ ...@@ -4,7 +4,42 @@
<!-- #endif --> <!-- #endif -->
<view class="page container"> <view class="page container">
<text>page lifecycle 选项式 API</text> <text>page lifecycle 选项式 API</text>
<view class="flex flex-row justify-between mt-10">
<text>onLoad 触发:</text>
<text>{{ isOnloadTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onShow 触发:</text>
<text>{{ isOnShowTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onReady 触发:</text>
<text>{{ isOnReadyTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onPullDownRefresh 触发:</text>
<text>{{ isOnPullDownRefreshTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onReachBottom 触发:</text>
<text>{{ isOnReachBottomTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onBackPress 触发:</text>
<text>{{ isOnBackPressTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onHide 触发:</text>
<text>{{ isOnHideTriggered }}</text>
</view>
<view class="flex flex-row justify-between mt-10">
<text>onResize 触发:</text>
<text>{{ isOnResizeTriggered }}</text>
</view>
<button class="mt-10" @click="scrollToBottom">scrollToBottom</button> <button class="mt-10" @click="scrollToBottom">scrollToBottom</button>
<button class="mt-10" @click="pullDownRefresh">
trigger pullDownRefresh
</button>
</view> </view>
<!-- #ifdef APP --> <!-- #ifdef APP -->
</scroll-view> </scroll-view>
...@@ -12,48 +47,68 @@ ...@@ -12,48 +47,68 @@
</template> </template>
<script lang="uts"> <script lang="uts">
import { state, setLifeCycleNum } from '@/store/index.uts' import { state, setLifeCycleNum } from '@/store/index.uts'
type DataInfo = { type DataInfo = {
isScrolled: boolean isScrolled: boolean
} }
export default { export default {
data() { data() {
return { return {
isOnloadTriggered: false,
isOnShowTriggered: false,
isOnReadyTriggered: false,
isOnPullDownRefreshTriggered: false,
isOnPageScrollTriggered: false,
isOnReachBottomTriggered: false,
isOnBackPressTriggered: false,
isOnHideTriggered: false,
isOnResizeTriggered: false,
dataInfo: { dataInfo: {
isScrolled: false, isScrolled: false,
} as DataInfo } as DataInfo
} }
}, },
onLoad(_ : OnLoadOptions) { onLoad(options : OnLoadOptions) {
console.log('onLoad', options)
this.isOnloadTriggered = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum + 100) setLifeCycleNum(state.lifeCycleNum + 100)
}, },
onShow() { onShow() {
this.isOnShowTriggered = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum + 10) setLifeCycleNum(state.lifeCycleNum + 10)
}, },
onReady() { onReady() {
this.isOnReadyTriggered = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum + 10) setLifeCycleNum(state.lifeCycleNum + 10)
}, },
onPullDownRefresh() { onPullDownRefresh() {
this.isOnPullDownRefreshTriggered = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum + 10) setLifeCycleNum(state.lifeCycleNum + 10)
}, },
onPageScroll(_) { onPageScroll(e: OnPageScrollOptions) {
console.log('onPageScroll', e)
this.isOnPageScrollTriggered = true
// 自动化测试 // 自动化测试
this.dataInfo.isScrolled = true this.dataInfo.isScrolled = true
}, },
onReachBottom() { onReachBottom() {
this.isOnReachBottomTriggered = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum + 10) setLifeCycleNum(state.lifeCycleNum + 10)
}, },
onBackPress(_ : OnBackPressOptions) : boolean | null { onBackPress(options : OnBackPressOptions) : boolean | null {
console.log('onBackPress', options)
this.isOnBackPressTriggered = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum - 10) setLifeCycleNum(state.lifeCycleNum - 10)
return null return null
}, },
onHide() { onHide() {
this.isOnHideTriggered = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum - 10) setLifeCycleNum(state.lifeCycleNum - 10)
}, },
...@@ -61,7 +116,9 @@ ...@@ -61,7 +116,9 @@
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum - 100) setLifeCycleNum(state.lifeCycleNum - 100)
}, },
onResize(_) { onResize(options: OnResizeOptions) {
console.log('onBackPress', options)
this.isOnResizeTriggered = true
// 自动化测试 // 自动化测试
setLifeCycleNum(state.lifeCycleNum + 10) setLifeCycleNum(state.lifeCycleNum + 10)
}, },
...@@ -91,11 +148,11 @@ ...@@ -91,11 +148,11 @@
}) })
}, },
}, },
} }
</script> </script>
<style> <style>
.container { .container {
height: 1200px; height: 1200px;
} }
</style> </style>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册