Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
hello-uvue
提交
33138f16
H
hello-uvue
项目概览
DCloud
/
hello-uvue
通知
367
Star
3
Fork
8
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hello-uvue
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
33138f16
编写于
1月 20, 2024
作者:
DCloud-WZF
💬
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 组件生命周期示例及测试
上级
145e39a2
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
198 addition
and
6 deletion
+198
-6
components/CompositionAPILifecycle.uvue
components/CompositionAPILifecycle.uvue
+57
-0
components/OptionsAPILifecycle.uvue
components/OptionsAPILifecycle.uvue
+63
-0
pages.json
pages.json
+7
-0
pages/composition-api/lifecycle/component-lifecycle/component-lifecycle.test.js
...lifecycle/component-lifecycle/component-lifecycle.test.js
+40
-0
pages/composition-api/lifecycle/component-lifecycle/component-lifecycle.uvue
...pi/lifecycle/component-lifecycle/component-lifecycle.uvue
+20
-0
pages/lifecycle/component/component.uvue
pages/lifecycle/component/component.uvue
+2
-2
pages/tab-bar/composition-api.uvue
pages/tab-bar/composition-api.uvue
+9
-4
未找到文件。
components/Lifecycle.uvue
→
components/
CompositionAPI
Lifecycle.uvue
浏览文件 @
33138f16
<template>
title: {{ title }}
<button class="component-lifecycle-btn" @click="updateTitle">updateTitle</button>
<button class="component-lifecycle-btn uni-common-mt" @click="updateTitle">
updateTitle
</button>
</template>
<script>
import { state, setLifeCycleNum } from '../store/index.uts'
export default {
name: 'ComponentLifecycle',
data() {
return {
title: 'component for lifecycle test',
}
},
beforeCreate() {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1)
console.log('component for lifecycle test beforeCreate')
},
created() {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1)
console.log('component for lifecycle test created')
},
beforeMount() {
<script setup>
import { state, setLifeCycleNum } from '../store/index.uts'
const title = ref('component for composition API lifecycle test')
onBeforeMount(() => {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1)
console.log('component for lifecycle test beforeMount')
},
mounted() {
console.log('component for lifecycle test mounted')
})
onMounted(() => {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1)
console.log('component for lifecycle test mounted')
},
beforeUpdate() {
})
onBeforeUpdate(() => {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1)
console.log('component for lifecycle test beforeUpdate')
},
updated() {
})
onUpdated(() => {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1)
console.log('component for lifecycle test updated')
},
beforeUnmount() {
})
onBeforeUnmount(() => {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum - 1)
console.log('component for lifecycle test beforeUnmount')
},
unmounted() {
})
onUnmounted(() => {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum - 1)
console.log('component for lifecycle test unmounted')
},
methods: {
updateTitle(){
this.title = 'component for lifecycle test updated'
}
},
}
</script>
})
// 测试无法触发
onActivated(() => { })
// 测试无法触发
onDeactivated(() => { })
const updateTitle = () => {
title.value = 'component for lifecycle test updated'
}
</script>
\ No newline at end of file
components/OptionsAPILifecycle.uvue
0 → 100644
浏览文件 @
33138f16
<template>
title: {{ title }}
<button class="component-lifecycle-btn uni-common-mt" @click="updateTitle">
updateTitle
</button>
</template>
<script>
import { state, setLifeCycleNum } from '../store/index.uts';
export default {
name: 'OptionsAPIComponentLifecycle',
data() {
return {
title: 'component for options API lifecycle test',
};
},
beforeCreate() {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1);
console.log('component for lifecycle test beforeCreate');
},
created() {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1);
console.log('component for lifecycle test created');
},
beforeMount() {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1);
console.log('component for lifecycle test beforeMount');
},
mounted() {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1);
console.log('component for lifecycle test mounted');
},
beforeUpdate() {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1);
console.log('component for lifecycle test beforeUpdate');
},
updated() {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum + 1);
console.log('component for lifecycle test updated');
},
beforeUnmount() {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum - 1);
console.log('component for lifecycle test beforeUnmount');
},
unmounted() {
// 自动化测试
setLifeCycleNum(state.lifeCycleNum - 1);
console.log('component for lifecycle test unmounted');
},
methods: {
updateTitle() {
this.title = 'component for lifecycle test updated';
},
},
};
</script>
\ No newline at end of file
pages.json
浏览文件 @
33138f16
...
...
@@ -594,6 +594,13 @@
"navigationBarTitleText"
:
"页面生命周期"
,
"enablePullDownRefresh"
:
true
}
},
{
"path"
:
"pages/composition-api/lifecycle/component-lifecycle/component-lifecycle"
,
"style"
:
{
"navigationBarTitleText"
:
"组件生命周期"
}
}
],
"tabBar"
:
{
...
...
pages/composition-api/lifecycle/component-lifecycle/component-lifecycle.test.js
0 → 100644
浏览文件 @
33138f16
const
PAGE_PATH
=
'
/pages/composition-api/lifecycle/component-lifecycle/component-lifecycle
'
const
HOME_PATH
=
'
/pages/tab-bar/options-api
'
describe
(
'
component-lifecycle
'
,
()
=>
{
let
page
let
lifeCycleNum
beforeAll
(
async
()
=>
{
page
=
await
program
.
reLaunch
(
HOME_PATH
)
await
page
.
waitFor
(
700
)
const
initLifecycleNum
=
0
await
page
.
callMethod
(
'
setLifeCycleNum
'
,
initLifecycleNum
)
lifeCycleNum
=
await
page
.
callMethod
(
'
getLifeCycleNum
'
)
expect
(
lifeCycleNum
).
toBe
(
initLifecycleNum
)
page
=
await
program
.
navigateTo
(
PAGE_PATH
)
await
page
.
waitFor
(
700
)
})
afterAll
(
async
()
=>
{
const
resetLifecycleNum
=
1100
await
page
.
callMethod
(
'
setLifeCycleNum
'
,
resetLifecycleNum
)
lifeCycleNum
=
await
page
.
callMethod
(
'
getLifeCycleNum
'
)
expect
(
lifeCycleNum
).
toBe
(
resetLifecycleNum
)
})
it
(
'
onBeforeMount onMounted
'
,
async
()
=>
{
lifeCycleNum
=
await
page
.
callMethod
(
'
getLifeCycleNum
'
)
expect
(
lifeCycleNum
).
toBe
(
2
)
})
it
(
'
onBeforeUpdate onUpdated
'
,
async
()
=>
{
const
updateTitleBtn
=
await
page
.
$
(
'
.component-lifecycle-btn
'
)
await
updateTitleBtn
.
tap
()
lifeCycleNum
=
await
page
.
callMethod
(
'
getLifeCycleNum
'
)
expect
(
lifeCycleNum
).
toBe
(
4
)
})
it
(
'
beforeUnmount unmounted
'
,
async
()
=>
{
page
=
await
program
.
navigateBack
()
lifeCycleNum
=
await
page
.
callMethod
(
'
getLifeCycleNum
'
)
expect
(
lifeCycleNum
).
toBe
(
2
)
})
})
\ No newline at end of file
pages/composition-api/lifecycle/component-lifecycle/component-lifecycle.uvue
0 → 100644
浏览文件 @
33138f16
<template>
<view class="page">
<text class="uni-common-mb">component lifecycle</text>
<component-lifecycle class="component-lifecycle" />
</view>
</template>
<script setup>
import ComponentLifecycle from '@/components/CompositionApiLifecycle.uvue'
import { state } from '@/store/index.uts'
// 自动化测试
const getLifeCycleNum = () : number => {
return state.lifeCycleNum
}
defineExpose({
getLifeCycleNum
})
</script>
\ No newline at end of file
pages/lifecycle/component/component.uvue
浏览文件 @
33138f16
<template>
<view class="page">
<text>component lifecycle</text>
<text
class="uni-common-mb"
>component lifecycle</text>
<component-lifecycle class="component-lifecycle" />
</view>
</template>
<script>
import ComponentLifecycle from '@/components/Lifecycle.uvue'
import ComponentLifecycle from '@/components/
OptionsAPI
Lifecycle.uvue'
import { state } from '@/store/index.uts'
export default {
components: { ComponentLifecycle },
...
...
pages/tab-bar/composition-api.uvue
浏览文件 @
33138f16
...
...
@@ -324,10 +324,15 @@
name: '生命周期',
open: false,
pages: [
{
name: '页面生命周期',
url: 'page-lifecycle',
enable: true,
{
name: '页面生命周期',
url: 'page-lifecycle',
enable: true,
},
{
name: '组件生命周期',
url: 'component-lifecycle',
enable: true,
},
]
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录