Diskuze: Blazor - reference a její předání do komponenty
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Blazor ukládá elementy a komponenty s @ref
do proměnných až
potom, co se komponenta vykreslí. Nemůžeš proto nikdy předat hodnotu z
@ref
takto parametrem další komponetě, protože předání
parametrů se děje před vykreslením, proto je předaná hodnota null.
Napadá mě to obejít tím, že místo reference na komponentu pošleš
komponentě lamda funkci, která ji vrátí:
Komponenta 1:
@code {
[Parameter]
public Func<Komponenta2> Reference { get; set; }
public void test()
{
Reference().Magic();
}
}
Rodičovská komponenta:
<Komponenta1 Reference="@( () => ref1 )"/>
<Komponenta2 @ref="ref1" />
@code {
public Komponenta2 ref1 { get; set; }
}
Pozor ale, stále platí že musíš test()
zavolat až v
OnAfterRender
, nikoliv už v OnInitialized
. Nebo
můžeš zavolat po kliku na tlačítko či po jiné události - to už je vše
vykreslené a hodnoty @ref
uložené.
Díky moc za objasnění. S pomocí lambda funkce to funguje jak má.
Zobrazeno 4 zpráv z 4.