@@ -88,11 +88,23 @@ function Member({className, style, name, bio, link, image, socials = {}}) {
88
88
function Volunteers ( ) {
89
89
const { data} = useSWR ( `${ VOLUNTEERS_DOMAIN } /data.json` , fetcher , {
90
90
suspense : true ,
91
+ revalidateIfStale : false ,
92
+ revalidateOnFocus : false ,
93
+ revalidateOnReconnect : false ,
91
94
} ) ;
92
95
93
96
const dataAugemented = useMemo ( ( ) => [ ...( data || [ ] ) , { } ] , [ data ] ) ;
94
97
95
98
const transition = useTransition ( dataAugemented , {
99
+ keys : ( item ) => item ?. name || 'last' ,
100
+ sort : ( a , b ) =>
101
+ Object . keys ( a ) . length === 0
102
+ ? 1
103
+ : Object . keys ( b ) . length === 0
104
+ ? - 1
105
+ : Math . random ( ) > 0.5
106
+ ? 1
107
+ : - 1 ,
96
108
delay : 200 ,
97
109
trail : 200 / dataAugemented . length ,
98
110
from : { opacity : 0 , scale : 0.8 } ,
@@ -126,16 +138,18 @@ function Volunteers() {
126
138
</ div >
127
139
</ div >
128
140
< div className = "members" >
129
- { transition ( ( style , item ) =>
130
- Object . keys ( item || { } ) . length > 0 ? (
131
- < Member { ...item } { ...{ style} } />
132
- ) : (
133
- < animated . div className = "last" { ...{ style} } >
134
- < Member className = { 'first' } />
135
- < Member className = { 'second' } />
136
- < Member className = { 'third' } bio = "And many more..." />
137
- </ animated . div >
138
- )
141
+ { transition (
142
+ ( style , item ) =>
143
+ item &&
144
+ ( Object . keys ( item ) . length > 0 ? (
145
+ < Member { ...item } { ...{ style} } />
146
+ ) : (
147
+ < animated . div className = "last" { ...{ style} } >
148
+ < Member className = { 'first' } />
149
+ < Member className = { 'second' } />
150
+ < Member className = { 'third' } bio = "And many more..." />
151
+ </ animated . div >
152
+ ) )
139
153
) }
140
154
</ div >
141
155
</ div >
0 commit comments