From 5dfbe6bdf6044ed30f10e480cf7433cb264c497a Mon Sep 17 00:00:00 2001
From: zhenyuWang <13641039885@163.com>
Date: Thu, 18 Jan 2024 15:29:15 +0800
Subject: [PATCH] feat(composition api): watchSyncEffect
---
.../watch-sync-effect.test.js | 112 ++++++++++++++++
.../watch-sync-effect/watch-sync-effect.uvue | 124 +++++++++++++++++-
pages/tab-bar/composition-api.uvue | 2 +-
3 files changed, 236 insertions(+), 2 deletions(-)
create mode 100644 pages/composition-api/reactivity/watch-sync-effect/watch-sync-effect.test.js
diff --git a/pages/composition-api/reactivity/watch-sync-effect/watch-sync-effect.test.js b/pages/composition-api/reactivity/watch-sync-effect/watch-sync-effect.test.js
new file mode 100644
index 0000000..bb28816
--- /dev/null
+++ b/pages/composition-api/reactivity/watch-sync-effect/watch-sync-effect.test.js
@@ -0,0 +1,112 @@
+const PAGE_PATH = '/pages/composition-api/reactivity/watch-sync-effect/watch-sync-effect'
+
+describe('watchSyncEffect', () => {
+ if (process.env.uniTestPlatformInfo.startsWith('android')) {
+ let page = null
+ beforeAll(async () => {
+ page = await program.reLaunch(PAGE_PATH)
+ await page.waitFor('view')
+ })
+ it('count', async () => {
+ const count = await page.$('#count')
+ expect(await count.text()).toBe('count: 0')
+
+ // watch
+ const watchCountRes = await page.$('#watch-count-res')
+ expect(await watchCountRes.text()).toBe(
+ 'watch count result: count: 0, count ref text: count: 0')
+
+ // track
+ const watchCountTrackNum = await page.$('#watch-count-track-num')
+ expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
+
+ // trigger
+ const watchCountTriggerNum = await page.$('#watch-count-trigger-num')
+ expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 1')
+ const watchCountCleanupRes = await page.$('#watch-count-cleanup-res')
+ expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 0')
+
+ // watch count and obj.num
+ const watchCountAndObjNumRes = await page.$('#watch-count-obj-num-res')
+ expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 0, obj.num: 0')
+
+ const incrementBtn = await page.$('#increment-btn')
+ await incrementBtn.tap()
+
+ expect(await count.text()).toBe('count: 1')
+ expect(await watchCountRes.text()).toBe(
+ 'watch count result: count: 1, count ref text: count: 0')
+ expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
+ expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 2')
+ expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 1')
+
+ expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 1, obj.num: 0')
+
+ await incrementBtn.tap()
+
+ expect(await count.text()).toBe('count: 2')
+ expect(await watchCountRes.text()).toBe(
+ 'watch count result: count: 2, count ref text: count: 1')
+ expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
+ expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 3')
+ expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 2')
+
+ expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 2, obj.num: 0')
+
+ // stop watch
+ const stopWatchCountBtn = await page.$('#stop-watch-count-btn')
+ await stopWatchCountBtn.tap()
+
+ await incrementBtn.tap()
+
+ expect(await count.text()).toBe('count: 3')
+ expect(await watchCountRes.text()).toBe(
+ 'watch count result: count: 2, count ref text: count: 1')
+ expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
+ expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 3')
+ expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 2')
+
+ expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 3, obj.num: 0')
+ })
+ it('obj', async () => {
+ const objStr = await page.$('#obj-str')
+ expect(await objStr.text()).toBe('obj.str: num: 0')
+ const objNum = await page.$('#obj-num')
+ expect(await objNum.text()).toBe('obj.num: 0')
+ const objBool = await page.$('#obj-bool')
+ expect(await objBool.text()).toBe('obj.bool: false')
+ const objArr = await page.$('#obj-arr')
+ expect(await objArr.text()).toBe('obj.arr: [0]')
+
+ const watchObjRes = await page.$('#watch-obj-res')
+ expect(await watchObjRes.text()).toBe(
+ 'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}')
+ const watchObjStrRes = await page.$('#watch-obj-str-res')
+ expect(await watchObjStrRes.text()).toBe(
+ 'watch obj.str result: str: num: 0, obj.str ref text: obj.str: num: 0')
+ const watchObjArrRes = await page.$('#watch-obj-arr-res')
+ expect(await watchObjArrRes.text()).toBe('watch obj.arr result: arr: [0]')
+
+ const updateObjBtn = await page.$('#update-obj-btn')
+ await updateObjBtn.tap()
+
+ expect(await objStr.text()).toBe('obj.str: num: 1')
+ expect(await objNum.text()).toBe('obj.num: 1')
+ expect(await objBool.text()).toBe('obj.bool: true')
+ expect(await objArr.text()).toBe('obj.arr: [0,1]')
+
+ expect(await watchObjRes.text()).toBe(
+ 'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}')
+ expect(await watchObjStrRes.text()).toBe(
+ 'watch obj.str result: str: num: 1, obj.str ref text: obj.str: num: 0')
+ expect(await watchObjArrRes.text()).toBe('watch obj.arr result: arr: [0,1]')
+
+ const watchCountAndObjNumRes = await page.$('#watch-count-obj-num-res')
+ expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 3, obj.num: 1')
+ })
+ } else {
+ it('other platform', () => {
+ expect(1).toBe(1)
+ })
+ }
+})
\ No newline at end of file
diff --git a/pages/composition-api/reactivity/watch-sync-effect/watch-sync-effect.uvue b/pages/composition-api/reactivity/watch-sync-effect/watch-sync-effect.uvue
index cb40d36..7ec5199 100644
--- a/pages/composition-api/reactivity/watch-sync-effect/watch-sync-effect.uvue
+++ b/pages/composition-api/reactivity/watch-sync-effect/watch-sync-effect.uvue
@@ -1 +1,123 @@
- watchSyncEffect
+
+
+
+
+
+ count: {{ count }}
+ watch count result: {{ watchCountRes }}
+ watch count track number: {{ watchCountTrackNum }}
+ watch count trigger number:
+ {{ watchCountTriggerNum }}
+ watch count cleanup result:
+ {{ watchCountCleanupRes }}
+
+
+ obj.str: {{ obj.str }}
+ obj.num: {{ obj.num }}
+ obj.bool: {{ obj.bool }}
+ obj.arr: {{ obj.arr }}
+ watch obj result: {{ watchObjRes }}
+ watch obj.str result: {{ watchObjStrRes }}
+ watch obj.arr result: {{ watchObjArrRes }}
+
+ watch count and obj.num result:
+ {{ watchCountAndObjNumRes }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/tab-bar/composition-api.uvue b/pages/tab-bar/composition-api.uvue
index 7ab563b..3d14698 100644
--- a/pages/tab-bar/composition-api.uvue
+++ b/pages/tab-bar/composition-api.uvue
@@ -121,7 +121,7 @@
{
name: 'watchSyncEffect',
url: 'watch-sync-effect',
- enable: false,
+ enable: true,
},
{
name: 'isRef',
--
GitLab