@@ -144,28 +144,30 @@ export const ReferenceSelector: FC<ReferenceSelectorProps> = ({
144144 } , { } ) ;
145145 } , [ filterSchema , referenceIdentifierField , referenceGenomesInfo ] ) ;
146146
147+ const optionsProvidersBySegment = useMemo ( ( ) => {
148+ return multiRefSegments . reduce < Record < string , OptionsProvider > > ( ( acc , segment ) => {
149+ const identifier = identifierBySegment [ segment ] ;
150+ if ( ! identifier ) return acc ;
151+
152+ acc [ segment ] = {
153+ type : 'generic' as const ,
154+ lapisUrl,
155+ lapisSearchParameters,
156+ fieldName : identifier ,
157+ } ;
158+
159+ return acc ;
160+ } , { } ) ;
161+ } , [ multiRefSegments , identifierBySegment , lapisUrl , lapisSearchParameters ] ) ;
162+
147163 return (
148164 < >
149165 { multiRefSegments . map ( ( segment ) => {
150- const selectId = `${ baseSelectId } -${ segment } ` ;
151- const identifier = identifierBySegment [ segment ] ;
152- const label = labelsBySegment [ segment ] ;
153-
154- const optionsProvider = useMemo (
155- ( ) => ( {
156- type : 'generic' as const ,
157- lapisUrl,
158- lapisSearchParameters,
159- fieldName : identifier ! ,
160- } ) ,
161- [ lapisUrl , lapisSearchParameters , identifier ] ,
162- ) ;
163-
164166 return (
165167 < SegmentReferenceSelector
166168 key = { segment }
167- label = { label }
168- selectId = { selectId }
169+ label = { labelsBySegment [ segment ] }
170+ selectId = { ` ${ baseSelectId } - ${ segment } ` }
169171 value = { selectedReferences [ segment ] }
170172 onChange = { ( e ) =>
171173 setSelectedReferences ( {
@@ -179,7 +181,7 @@ export const ReferenceSelector: FC<ReferenceSelectorProps> = ({
179181 [ segment ] : null ,
180182 } )
181183 }
182- optionsProvider = { optionsProvider }
184+ optionsProvider = { optionsProvidersBySegment [ segment ] }
183185 />
184186 ) ;
185187 } ) }
0 commit comments