@@ -156,7 +156,9 @@ protected override Task UpdateDisplayAsync(in RenderBatch renderBatch)
156156 for ( var i = 0 ; i < renderBatch . DisposedComponentIDs . Count ; i ++ )
157157 {
158158 var id = renderBatch . DisposedComponentIDs . Array [ i ] ;
159+
159160 logger . LogDebug ( new EventId ( 10 , nameof ( UpdateDisplayAsync ) ) , $ "Component with ID = { id } has been disposed.") ;
161+
160162 if ( renderedComponents . TryGetValue ( id , out var rc ) )
161163 {
162164 renderedComponents . Remove ( id ) ;
@@ -168,6 +170,7 @@ protected override Task UpdateDisplayAsync(in RenderBatch renderBatch)
168170 foreach ( var ( key , rc ) in renderedComponents . ToArray ( ) )
169171 {
170172 logger . LogDebug ( new EventId ( 11 , nameof ( UpdateDisplayAsync ) ) , $ "Component with ID = { rc . ComponentId } has been rendered.") ;
173+
171174 LoadRenderTreeFrames ( rc . ComponentId , renderEvent . Frames ) ;
172175
173176 rc . OnRender ( renderEvent ) ;
@@ -236,7 +239,6 @@ private TResult Render<TResult>(RenderFragment renderFragment, Func<int, TResult
236239 return result ;
237240 }
238241
239- [ SuppressMessage ( "Design" , "MA0051:Method is too long" , Justification = "TODO: Refactor" ) ]
240242 private IReadOnlyList < IRenderedComponentBase < TComponent > > FindComponents < TComponent > ( IRenderedFragmentBase parentComponent , int resultLimit )
241243 where TComponent : IComponent
242244 {
@@ -269,7 +271,7 @@ void FindComponentsInternal(int componentId)
269271 {
270272 if ( frame . Component is TComponent component )
271273 {
272- GetOrCreateRenderedComponent ( frame . ComponentId , component ) ;
274+ result . Add ( GetOrCreateRenderedComponent ( framesCollection , frame . ComponentId , component ) ) ;
273275
274276 if ( result . Count == resultLimit )
275277 return ;
@@ -282,24 +284,25 @@ void FindComponentsInternal(int componentId)
282284 }
283285 }
284286 }
287+ }
285288
286- void GetOrCreateRenderedComponent ( int componentId , TComponent component )
287- {
288- IRenderedComponentBase < TComponent > rc ;
289-
290- if ( renderedComponents . TryGetValue ( componentId , out var rf ) )
291- {
292- rc = ( IRenderedComponentBase < TComponent > ) rf ;
293- }
294- else
295- {
296- LoadRenderTreeFrames ( componentId , framesCollection ) ;
297- rc = activator . CreateRenderedComponent ( componentId , component , framesCollection ) ;
298- renderedComponents . Add ( rc . ComponentId , rc ) ;
299- }
289+ IRenderedComponentBase < TComponent > GetOrCreateRenderedComponent < TComponent > ( RenderTreeFrameDictionary framesCollection , int componentId , TComponent component )
290+ where TComponent : IComponent
291+ {
292+ IRenderedComponentBase < TComponent > result ;
300293
301- result . Add ( rc ) ;
294+ if ( renderedComponents . TryGetValue ( componentId , out var renderedComponent ) )
295+ {
296+ result = ( IRenderedComponentBase < TComponent > ) renderedComponent ;
302297 }
298+ else
299+ {
300+ LoadRenderTreeFrames ( componentId , framesCollection ) ;
301+ result = activator . CreateRenderedComponent ( componentId , component , framesCollection ) ;
302+ renderedComponents . Add ( result . ComponentId , result ) ;
303+ }
304+
305+ return result ;
303306 }
304307
305308 /// <summary>
0 commit comments