@@ -36,7 +36,7 @@ function Transfer(props: TransferProps) {
36
36
const {
37
37
placeholder,
38
38
options,
39
- value,
39
+ value = [ ] ,
40
40
showSearch = false ,
41
41
selectedAll = false ,
42
42
@@ -62,13 +62,12 @@ function Transfer(props: TransferProps) {
62
62
} ) ;
63
63
64
64
useEffect ( ( ) => {
65
- leftSelectedKeySet ( [ ] ) ;
66
- rightSelectedKeySet ( [ ] ) ;
65
+ if ( value ) {
66
+ rightOpionSet ( value || [ ] ) ;
67
67
68
- rightOpionSet ( value || [ ] ) ;
69
-
70
- value ?. forEach ( ( selectd ) => selectOption . set ( selectd . key , selectd . label ) ) ;
71
- hiddenNode ( ( child ) => ! ! value ?. find ( ( selectd ) => child . key === selectd . key ) ) ;
68
+ value ?. forEach ( ( selectd ) => selectOption . set ( selectd . key , selectd . label ) ) ;
69
+ hiddenNode ( ( child ) => ! ! value ?. find ( ( selectd ) => child . key === selectd . key ) ) ;
70
+ }
72
71
} , [ JSON . stringify ( value ) ] ) ;
73
72
74
73
const hiddenNode = ( callBackfn : ( child : TreeData ) => boolean ) => {
@@ -136,20 +135,22 @@ function Transfer(props: TransferProps) {
136
135
} ;
137
136
138
137
const transferClick = ( transferType : 'left' | 'right' ) => {
139
- let selectOptionTemp = selectOption ;
140
138
if ( transferType === 'left' ) {
141
139
leftSelectOption . forEach ( ( value , key ) => {
142
- selectOptionTemp . set ( key , value ) ;
140
+ selectOption . set ( key , value ) ;
143
141
} ) ;
144
- leftSelectOptionSet ( selectOptionTemp ) ;
142
+ leftSelectOptionSet ( new Map ( ) ) ;
143
+ leftSelectedKeySet ( [ ] ) ;
145
144
} else {
146
145
rightSelectedKeys . forEach ( ( key ) => {
147
146
selectOption . delete ( key ! ) ;
148
147
} ) ;
148
+ rightSelectedKeySet ( [ ] ) ;
149
149
}
150
- selectOptionSet ( selectOptionTemp ) ;
150
+
151
+ selectOptionSet ( selectOption ) ;
151
152
const option : Array < TransferOptionType > = [ ] ;
152
- selectOptionTemp . forEach ( ( label , key ) => option . push ( { key, label } ) ) ;
153
+ selectOption . forEach ( ( label , key ) => option . push ( { key, label } ) ) ;
153
154
props . onChange ?.( transferType , option ) ;
154
155
} ;
155
156
@@ -192,17 +193,19 @@ function Transfer(props: TransferProps) {
192
193
selectedOptionsRecursion ( child . children ) ;
193
194
}
194
195
if ( ! child . hideNode ) {
195
- selectOption . set ( child . key ! , child . label as string ) ;
196
+ leftSelectOption . set ( child . key ! , child . label as string ) ;
196
197
keys . push ( child . key ! ) ;
197
198
}
198
199
} ) ;
199
200
} ;
200
201
selectedOptionsRecursion ( selectedOptions ) ;
202
+
203
+ leftSelectOptionSet ( leftSelectOption ) ;
201
204
leftSelectedKeySet ( keys ) ;
202
205
} else {
203
206
leftSelectedKeySet ( [ ] ) ;
207
+ leftSelectOptionSet ( new Map ( ) ) ;
204
208
}
205
- selectOptionSet ( selectOption ) ;
206
209
selectAllCheckedSet ( selectAllChecked ) ;
207
210
} ;
208
211
@@ -211,15 +214,11 @@ function Transfer(props: TransferProps) {
211
214
212
215
selectAllChecked . right = isChecked ? 1 : 0 ;
213
216
if ( isChecked ) {
214
- const keys = rightOpions . map ( ( child ) => {
215
- selectOption . delete ( child . key ! ) ;
216
- return child . key ;
217
- } ) ;
217
+ const keys = rightOpions . map ( ( child ) => child . key ) ;
218
218
rightSelectedKeySet ( keys ) ;
219
219
} else {
220
220
rightSelectedKeySet ( [ ] ) ;
221
221
}
222
- selectOptionSet ( selectOption ) ;
223
222
selectAllCheckedSet ( selectAllChecked ) ;
224
223
} ;
225
224
0 commit comments