File tree Expand file tree Collapse file tree 1 file changed +63
-0
lines changed Expand file tree Collapse file tree 1 file changed +63
-0
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,8 @@ const {
10
10
markRaw,
11
11
toRaw,
12
12
nextTick,
13
+ defineComponent,
14
+ onMounted,
13
15
} = require ( '../src' )
14
16
const { sleep } = require ( './helpers/utils' )
15
17
@@ -886,4 +888,65 @@ describe('setup', () => {
886
888
await nextTick ( )
887
889
expect ( vm . $el . textContent ) . toBe ( '2' )
888
890
} )
891
+
892
+ // #448
893
+ it ( 'should not cause infinite loop' , async ( ) => {
894
+ const A = defineComponent ( {
895
+ template : `<div></div>` ,
896
+ props : {
897
+ pattern : {
898
+ type : RegExp ,
899
+ required : true ,
900
+ } ,
901
+ } ,
902
+
903
+ setup ( props ) {
904
+ return {
905
+ props,
906
+ }
907
+ } ,
908
+ } )
909
+ const B = defineComponent ( {
910
+ template : `<div></div>` ,
911
+ setup ( props , { emit } ) {
912
+ onMounted ( ( ) => {
913
+ emit ( 'ev' , true )
914
+ } )
915
+
916
+ return { }
917
+ } ,
918
+ } )
919
+
920
+ const vm = new Vue (
921
+ defineComponent ( {
922
+ components : {
923
+ A,
924
+ B,
925
+ } ,
926
+
927
+ template : ` <div>
928
+ <A :pattern="/./"/>
929
+
930
+ <div
931
+ v-for="(k, v) in o.v"
932
+ :key="v"
933
+ >{{v}}</div>
934
+
935
+ <B @ev="(v) => { o = v; }"/>
936
+ </div>` ,
937
+ setup ( props , { emit } ) {
938
+ const o = ref ( [ false ] )
939
+
940
+ return {
941
+ o,
942
+ emit,
943
+ }
944
+ } ,
945
+ } )
946
+ ) . $mount ( )
947
+
948
+ await vm . $nextTick ( )
949
+
950
+ expect ( warn ) . not . toBeCalled ( )
951
+ } )
889
952
} )
You can’t perform that action at this time.
0 commit comments