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 zpracovávat události životního cyklu komponent Blazor, provedete změny v dialogovém okně konfigurace pizzy pro zpracování případu s pevnou velikostí.
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
ImageUrl
vlastnost přidejte následující novou vlastnost:public int? FixedSize { get; set; }
Otevřete soubor Pizza.cs a nahraďte metodu
GetBasePrice
ná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íBasePrice
hodnotu .Rozbalte data a vyberte SeedData.cs.
Do souboru SeedData.cs přidejte následující kód pro novou pizzu velikosti rodiny na konec
specials
deklarace pole vInitializeAsync
metodě.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
SeedData
předem naplní databázi pizzy speciálními pizzami. Pokud chcete vytvořit novouPizzaSpecial
databá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 Spustit>zastavit ladění 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
@code
za 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
supportSizing
výchozím nastavení je pole nastaveno natrue
hodnotu , ale pokud má pizza pevnou velikost, je pole nastaveno nafalse
hodnotu .OnInitialized
Metoda životního cyklu přepíše velikost pizzy na pevnou velikost a zakáže podporu velikosti.Poznámka:
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ílabel
ainput
řá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 pizzu ve velikosti rodiny a ověřte, že je posuvník velikosti zakázaný, protože se nevykresluje.
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 Spustit>zastavit ladění aplikaci zastavte.