File tree 1 file changed +7
-3
lines changed
1 file changed +7
-3
lines changed Original file line number Diff line number Diff line change @@ -26,11 +26,15 @@ const Setting = <T extends string | boolean>({
26
26
const [ modalContent , setModalContent ] = useState (
27
27
typeof value === 'string' ? value : ''
28
28
)
29
+ // This is used for toggles because the upper value is not updated immediately, resulting in judder.
30
+ const [ toggleValue , setToggleValue ] = useState ( value )
31
+
29
32
const Wrapper = setValue || onClick ? Pressable : React . Fragment
30
33
const wrapperPress = ( ) => {
31
34
if ( onClick ) onClick ( )
32
35
else if ( typeof value === 'boolean' && setValue ) {
33
- setValue ( ! value as T )
36
+ setValue ( ! toggleValue as T )
37
+ setToggleValue ( ! toggleValue as T )
34
38
} else if ( typeof value === 'string' && setValue && ! modalOpen ) {
35
39
setModalOpen ( true )
36
40
setModalContent ( value )
@@ -66,10 +70,10 @@ const Setting = <T extends string | boolean>({
66
70
{ value || 'N/A' }
67
71
</ Text >
68
72
) }
69
- { typeof value === 'boolean' && (
73
+ { typeof toggleValue === 'boolean' && (
70
74
< >
71
75
< View style = { globalStyle . flexSpacer } />
72
- < Switch value = { value } onValueChange = { wrapperPress } />
76
+ < Switch value = { toggleValue } onValueChange = { wrapperPress } />
73
77
</ >
74
78
) }
75
79
</ View >
You can’t perform that action at this time.
0 commit comments