Cvičení – vylepšení interaktivity aplikací s událostmi životního cyklu
Společnost pizza se rozhodla, že chce prodávat speciální rodinnou pizzu, která je k dispozici pouze v jedné velikosti 24 palců. Aktuální aplikace pizzy má posuvník velikosti, který nepodporuje jednu velikost pizzy. Zobrazí se výzva, abyste přidali novou pizzu ve velikosti rodiny a zakázali možnost velikosti této pizzy.
V tomto cvičení změníte databázi pizzy tak, aby přidala pizzu ve velikosti rodiny a změnila model pizzy tak, aby podporovala novou pizzu. Pokud chcete zpracovat události životního cyklu komponent Blazor, upravíte dialogové okno pro konfiguraci pizzy tak, aby zpracovávalo případ pevné velikosti.
Vytvoření nové rodinné pizzy
Nejprve do modelu pizzy přidáte novou FixedSize funkci a v databázi pizzy vytvoříte novou pizzu ve velikosti rodiny.
V Průzkumníku editoru Visual Studio Code rozbalte položku Modely a vyberte PizzaSpecial.cs.
Do souboru PizzaSpecial.cs za
ImageUrlvlastnost přidejte následující novou vlastnost:public int? FixedSize { get; set; }Otevřete soubor Pizza.cs a nahraďte metodu
GetBasePricenásledujícím kódem:public decimal GetBasePrice() => Special is { FixedSize: not null } ? Special.BasePrice : (decimal)Size / DefaultSize * Special?.BasePrice ?? 1;Kód nyní odpovídá speciálnímu, který má
FixedSize, když vrátíBasePricehodnotu .Rozbalte data a vyberte SeedData.cs.
Do souboru SeedData.cs přidejte následující kód pro novou pizzu velikosti rodiny na konec
specialsdeklarace pole vInitializeAsyncmetodě.new() { Id = 9, Name = "Margherita Family Size", Description = "24\" of pure tomatoes and basil", BasePrice = 14.99m, ImageUrl = "img/pizzas/margherita.jpg", FixedSize = 24 }Třída
SeedDatapředem naplní databázi pizzy speciálními pizzami. Pokud chcete vytvořit novouPizzaSpecialdatabázi, musíte existující databázi odstranit. V Průzkumníku vyberte a odstraňte soubory pizza.db, pizza.db-shm a pizza.db-wal.V editoru Visual Studio Code stiskněte klávesu F5nebo vyberte Spustit spuštění>ladění.
V aplikaci vyberte novou pizzu Margherita Family Size .
Ve formuláři objednávky si všimněte, že stále můžete změnit velikost pizzy.
Stisknutím kláves Shift+F5 nebo výběrem možnosti > aplikaci zastavte.
Odebrání posuvníku velikosti
Komponenta ConfigurePizzaDialog používá element HTML range , který zákazníkovi umožní vybrat velikost pizzy. Jedním ze způsobů, jak zakázat uživatelský vstup, je podmíněně vynechat vykreslování uživatelského ovládacího prvku velikosti.
V Průzkumníku editoru Visual Studio Code rozbalte položku Sdílené a pak vyberte ConfigurePizzaDialog.razor.
Do direktivy
@codeza existující vlastnosti přidejte následující členy:bool supportSizing = true; protected override void OnInitialized() { if (Pizza is { Special.FixedSize: not null }) { Pizza.Size = Pizza.Special.FixedSize.Value; supportSizing = false; } }Ve
supportSizingvýchozím nastavení je pole nastaveno natruehodnotu , ale pokud má pizza pevnou velikost, je pole nastaveno nafalsehodnotu .OnInitializedMetoda životního cyklu přepíše velikost pizzy na pevnou velikost a zakáže podporu velikosti.Note
Pokud váš kód spoléhal na interoperabilitu JavaScriptu
OnInitialized, použití metody by nefungovala. Místo toho byste museli použít metoduOnAfterRenderAsync, abyste měli jistotu, že byla k dispozici interoperabilita JavaScriptu.V horní části souboru v souboru
<form class="dialog-body">nahraďte existujícílabelainputřádky následujícím kódem:@if (supportSizing) { <label>Size:</label> <input type="range" min="@Pizza.MinimumSize" max="@Pizza.MaximumSize" step="1" @bind="Pizza.Size" @bind:event="oninput" /> }Stiskněte klávesu F5 nebo vyberte Spustit>ladění.
Přidejte rodinnou pizzu a ověřte, že je posuvník velikosti deaktivovaný, protože se nevykreslí.
Objednejte si jinou pizzu a ověřte, že pro tuto pizzu stále můžete použít posuvník velikosti.
Stisknutím kláves Shift+F5 nebo výběrem možnosti > aplikaci zastavte.