@page "/"
<PageTitle>Index</PageTitle>
<p role="status">Current count: @activeIndex</p>
<p><button class="btn btn-primary" @onclick="ChangeIndex">Click me</button></p>
<div>
@frags[activeIndex]
</div>
@code
{
int activeIndex = 0;
List<RenderFragment> frags = new List<RenderFragment>();
List<IComponent> comps = new List<IComponent>();
void ChangeIndex()
{
if (activeIndex < frags.Count() - 1)
{
activeIndex++;
}
else
{
activeIndex = 0;
}
}
Random rnd = new Random();
(IComponent,RenderFragment) getRandom(int randomCount)
{
switch (rnd.Next(0, 3))
{
case 0:
{
var b = new Test1();
b.ManualSet = randomCount;
RenderFragment c = (@<Test1 @ref=b />); // "Ref b" is not using data from object b as as expected
return (b, c);
}
case 1:
{
var b = new Test2();
b.ManualSet = randomCount;
RenderFragment c = (@<Test2 @ref=b />);
return (b, c);
}
case 2:
{
var b = new Test3();
b.ManualSet = randomCount;
RenderFragment c = (@<Test3 @ref=b />);
return (b, c);
}
}
throw new Exception("no return");
}
protected override async Task OnInitializedAsync()
{
for(int i = 0;i < 10; i++)
{
var random = getRandom(i);
comps.Add(random.Item1);
frags.Add(random.Item2);
}
}
}