From 102617bb071d2e946d9f95ab9d63ef2efea7dcf6 Mon Sep 17 00:00:00 2001
From: zhenyuWang <13641039885@163.com>
Date: Tue, 14 May 2024 19:56:19 +0800
Subject: [PATCH] =?UTF-8?q?refactor(component=20instance):=20=E4=BC=98?=
=?UTF-8?q?=E5=8C=96=E7=A4=BA=E4=BE=8B=E5=8F=8A=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../data/data-composition.uvue | 54 +++++++++++----
.../component-instance/data/data-options.uvue | 67 +++++++++++++------
pages/component-instance/data/data.test.js | 12 ++++
pages/reactivity/core/reactive/reactive.uvue | 1 +
4 files changed, 101 insertions(+), 33 deletions(-)
diff --git a/pages/component-instance/data/data-composition.uvue b/pages/component-instance/data/data-composition.uvue
index c131ae4..04b533c 100644
--- a/pages/component-instance/data/data-composition.uvue
+++ b/pages/component-instance/data/data-composition.uvue
@@ -12,22 +12,50 @@
arr:
{{ arr.join(',') }}
-
+
+ obj.str:
+ {{ obj.str }}
+
+
+ obj.num:
+ {{ obj.num }}
+
+
+ obj.arr:
+ {{ obj.arr.join(',') }}
+
+
+ defineExpose({
+ updateData
+ })
+
\ No newline at end of file
diff --git a/pages/component-instance/data/data-options.uvue b/pages/component-instance/data/data-options.uvue
index b32867e..3f3eb54 100644
--- a/pages/component-instance/data/data-options.uvue
+++ b/pages/component-instance/data/data-options.uvue
@@ -12,25 +12,52 @@
arr:
{{ arr.join(',') }}
-
+
+ obj.str:
+ {{ obj.str }}
+
+
+ obj.num:
+ {{ obj.num }}
+
+
+ obj.arr:
+ {{ obj.arr.join(',') }}
+
+
-
-
+
+
+ type Obj = {
+ str : string,
+ num : number,
+ arr : number[]
+ }
+ export default {
+ data() {
+ return {
+ str: 'default str',
+ num: 0,
+ arr: [1, 2, 3],
+ // 特殊类型需要通过 as 指定类型
+ obj: {
+ str: 'default obj.str',
+ num: 10,
+ arr: [4, 5, 6]
+ } as Obj
+ }
+ },
+ methods: {
+ updateData() {
+ this.str = 'new str'
+ this.num = 1
+ this.arr = [4, 5, 6]
+
+ this.obj.str = 'new obj.str'
+ this.obj.num = 100
+ this.obj.arr = [7, 8, 9]
+ },
+ },
+ }
+
\ No newline at end of file
diff --git a/pages/component-instance/data/data.test.js b/pages/component-instance/data/data.test.js
index 38029a4..b885196 100644
--- a/pages/component-instance/data/data.test.js
+++ b/pages/component-instance/data/data.test.js
@@ -13,11 +13,23 @@ describe('$data', () => {
const arr = await page.$('#arr')
expect(await arr.text()).toBe('1,2,3')
+ const objStr = await page.$('#obj-str')
+ expect(await objStr.text()).toBe('default obj.str')
+
+ const objNum = await page.$('#obj-num')
+ expect(await objNum.text()).toBe('10')
+
+ const objArr = await page.$('#obj-arr')
+ expect(await objArr.text()).toBe('4,5,6')
+
await page.callMethod('updateData')
expect(await str.text()).toBe('new str')
expect(await num.text()).toBe('1')
expect(await arr.text()).toBe('4,5,6')
+ expect(await objStr.text()).toBe('new obj.str')
+ expect(await objNum.text()).toBe('100')
+ expect(await objArr.text()).toBe('7,8,9')
}
it('$data 选项式 API', async () => {
diff --git a/pages/reactivity/core/reactive/reactive.uvue b/pages/reactivity/core/reactive/reactive.uvue
index ae813e4..8f3c3c0 100644
--- a/pages/reactivity/core/reactive/reactive.uvue
+++ b/pages/reactivity/core/reactive/reactive.uvue
@@ -23,6 +23,7 @@