Skip to content

Commit 5b3b0e6

Browse files
committed
fix: view is not updated when properties are modified programmatically
1 parent 6e0a55c commit 5b3b0e6

File tree

7 files changed

+239
-189
lines changed

7 files changed

+239
-189
lines changed

auto-imports.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,5 @@ declare global {
6161
// for type re-export
6262
declare global {
6363
// @ts-ignore
64-
export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
64+
export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
6565
}

demo/vue2.6/index.vue

+41-25
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,52 @@
1+
<script>
2+
import Vue from 'vue'
3+
import VueCompositionAPI from '@vue/composition-api'
4+
import JsonEditorVue from '../../src'
5+
6+
Vue.use(VueCompositionAPI)
7+
8+
export default {
9+
components: { JsonEditorVue },
10+
data() {
11+
return {
12+
version: Vue.version,
13+
value: {
14+
bigint: 124124124124124124124n,
15+
boolean: true,
16+
string: 'Hello World',
17+
number: 123.456,
18+
color: '#b0a4e3',
19+
null: null,
20+
time: 1575599819000,
21+
array: [1, 2],
22+
object: {
23+
a: 'b',
24+
c: 'd',
25+
},
26+
},
27+
mode: undefined,
28+
readOnly: false,
29+
}
30+
},
31+
mounted() {
32+
console.log('expand: ', this.$refs.jsonEditorVueRef.jsonEditor.expand)
33+
},
34+
}
35+
</script>
36+
137
<template>
238
<div>
339
<h1>vue@{{ version }}</h1>
440
<p>
5-
<button @click="value = '123'">
41+
<button @click="data.value = Math.random()">
642
设值为 string
743
</button>
8-
<button @click="value = { abc: '123' }">
44+
<button @click="data.value = { abc: Math.random() }">
945
设值为 JSON
1046
</button>
47+
<button @click="data.value.number = Math.random()">
48+
改变属性
49+
</button>
1150
<button @click="value = undefined">
1251
清空
1352
</button>
@@ -36,26 +75,3 @@
3675
{{ typeof value }}
3776
</div>
3877
</template>
39-
40-
<script>
41-
import Vue from 'vue'
42-
import VueCompositionAPI from '@vue/composition-api'
43-
import JsonEditorVue from '../../src'
44-
45-
Vue.use(VueCompositionAPI)
46-
47-
export default {
48-
components: { JsonEditorVue },
49-
data() {
50-
return {
51-
version: Vue.version,
52-
value: undefined,
53-
mode: undefined,
54-
readOnly: false,
55-
}
56-
},
57-
mounted() {
58-
console.log('expand: ', this.$refs.jsonEditorVueRef.jsonEditor.expand)
59-
},
60-
}
61-
</script>

demo/vue2.7/index.vue

+35-19
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,46 @@
1+
<script setup>
2+
import { onMounted, reactive, ref, version } from 'vue'
3+
import JsonEditorVue from '../../src'
4+
5+
const data = reactive({
6+
value: {
7+
bigint: 124124124124124124124n,
8+
boolean: true,
9+
string: 'Hello World',
10+
number: 123.456,
11+
color: '#b0a4e3',
12+
null: null,
13+
time: 1575599819000,
14+
array: [1, 2],
15+
object: {
16+
a: 'b',
17+
c: 'd',
18+
},
19+
},
20+
mode: undefined,
21+
readOnly: false,
22+
})
23+
24+
const jsonEditorVueRef = ref()
25+
26+
onMounted(() => {
27+
console.log('expand: ', jsonEditorVueRef.value.jsonEditor.expand)
28+
})
29+
</script>
30+
131
<template>
232
<div>
333
<h1>vue@{{ version }}</h1>
434
<p>
5-
<button @click="data.value = '123'">
35+
<button @click="data.value = Math.random()">
636
设值为 string
737
</button>
8-
<button @click="data.value = { abc: '123' }">
38+
<button @click="data.value = { abc: Math.random() }">
939
设值为 JSON
1040
</button>
41+
<button @click="data.value.number = Math.random()">
42+
改变属性
43+
</button>
1144
<button @click="data.value = undefined">
1245
清空
1346
</button>
@@ -36,20 +69,3 @@
3669
{{ typeof data.value }}
3770
</div>
3871
</template>
39-
40-
<script setup>
41-
import { onMounted, reactive, ref, version } from 'vue'
42-
import JsonEditorVue from '../../src'
43-
44-
const data = reactive({
45-
value: undefined,
46-
mode: undefined,
47-
readOnly: false,
48-
})
49-
50-
const jsonEditorVueRef = ref()
51-
52-
onMounted(() => {
53-
console.log('expand: ', jsonEditorVueRef.value.jsonEditor.expand)
54-
})
55-
</script>

demo/vue3/index.vue

+19-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,20 @@ const data = reactive<{
2222
readOnly?: boolean
2323
parser?: { parse: (...args: any) => unknown; stringify: (...args: any) => unknown }
2424
}>({
25-
value: undefined,
25+
value: {
26+
bigint: 124124124124124124124n,
27+
boolean: true,
28+
string: 'Hello World',
29+
number: 123.456,
30+
color: '#b0a4e3',
31+
null: null,
32+
time: 1575599819000,
33+
array: [1, 2],
34+
object: {
35+
a: 'b',
36+
c: 'd',
37+
},
38+
},
2639
mode: undefined,
2740
readOnly: false,
2841
parser: LosslessJSONParser,
@@ -38,12 +51,15 @@ onMounted(() => {
3851
<div>
3952
<h1>vue@{{ version }}</h1>
4053
<p>
41-
<button @click="data.value = '123'">
54+
<button @click="data.value = Math.random()">
4255
设值为 string
4356
</button>
44-
<button @click="data.value = { abc: 124124124124124124124n }">
57+
<button @click="data.value = { abc: Math.random() }">
4558
设值为 JSON
4659
</button>
60+
<button @click="data.value.number = Math.random()">
61+
改变属性
62+
</button>
4763
<button @click="data.value = undefined">
4864
清空
4965
</button>

0 commit comments

Comments
 (0)