Ćwiczenie — ulepszanie interakcyjności aplikacji za pomocą zdarzeń cyklu życia
Firma pizzerii zdecydowała, że chce sprzedać specjalną pizzę wielkości rodziny, która jest dostępna tylko w jednym rozmiarze 24 cali. Bieżąca aplikacja do pizzy ma suwak rozmiaru, który nie obsługuje pizzy o jednym rozmiarze. Poproszono Cię o dodanie nowej pizzy o rozmiarze rodzinnym i wyłączenie opcji rozmiaru dla tej pizzy.
W tym ćwiczeniu zmienisz bazę danych pizzy, aby dodać pizzę o rozmiarze rodziny i zmienić model pizzy, aby obsługiwać nową pizzę. Aby obsługiwać zdarzenia cyklu życia składników platformy Blazor, należy wprowadzić zmiany w oknie dialogowym konfigurowania pizzy w celu obsługi przypadku o stałym rozmiarze.
Tworzenie nowej pizzy o rozmiarze rodziny
Najpierw dodasz nową FixedSize
możliwość do modelu pizzy i utworzysz nową pizzę o rozmiarze rodzinnym w bazie danych pizzy.
W Eksploratorze programu Visual Studio Code rozwiń pozycję Modele i wybierz pozycję PizzaSpecial.cs.
W pliku PizzaSpecial.cs po
ImageUrl
właściwości dodaj następującą nową właściwość:public int? FixedSize { get; set; }
Otwórz plik Pizza.cs i zastąp metodę
GetBasePrice
następującym kodem:public decimal GetBasePrice() => Special is { FixedSize: not null } ? Special.BasePrice : (decimal)Size / DefaultSize * Special?.BasePrice ?? 1;
Kod jest teraz kontem specjalnym, który ma
FixedSize
wartość , gdy zwraca wartośćBasePrice
.Rozwiń węzeł Dane i wybierz pozycję SeedData.cs.
W pliku SeedData.cs dodaj następujący kod dla nowej pizzy o rozmiarze rodziny na końcu
specials
deklaracji tablicy w metodzieInitializeAsync
.new() { Id = 9, Name = "Margherita Family Size", Description = "24\" of pure tomatoes and basil", BasePrice = 14.99m, ImageUrl = "img/pizzas/margherita.jpg", FixedSize = 24 }
Klasa
SeedData
wstępnie wypełnia bazę danych pizzy specjalnymi pizzami. Aby utworzyć nowąPizzaSpecial
bazę danych, musisz usunąć istniejącą bazę danych. W Eksploratorze wybierz i usuń pliki pizza.db, pizza.db-shm i pizza.db-wal .W programie Visual Studio Code naciśnij F5lub wybierz pozycję Uruchom rozpocznij>debugowanie.
W aplikacji wybierz nową pizzę Rita Family Size .
W formularzu zamówienia zwróć uwagę, że nadal można zmienić rozmiar pizzy.
Naciśnij Shift+F5 lub wybierz pozycję Uruchom zatrzymaj>debugowanie, aby zatrzymać aplikację.
Usuń suwak rozmiaru
Składnik ConfigurePizzaDialog
używa elementu HTML range
, aby umożliwić klientowi wybranie rozmiaru pizzy. Jednym ze sposobów wyłączenia danych wejściowych użytkownika jest warunkowe pominięcie renderowania kontrolki użytkownika rozmiaru.
W Eksploratorze programu Visual Studio Code rozwiń węzeł Udostępnione, a następnie wybierz pozycję KonfigurujPizzaDialog.razor.
@code
W dyrektywie po istniejących właściwościach dodaj następujące elementy członkowskie:bool supportSizing = true; protected override void OnInitialized() { if (Pizza is { Special.FixedSize: not null }) { Pizza.Size = Pizza.Special.FixedSize.Value; supportSizing = false; } }
Pole
supportSizing
domyślnie matrue
wartość , ale jeśli pizza ma stały rozmiar, pole jest ustawione nafalse
wartość . MetodaOnInitialized
cyklu życia zastępuje rozmiar pizzy na stały rozmiar i wyłącza obsługę rozmiaru.Uwaga
Jeśli kod polegał na międzyoperacji języka JavaScript, użycie
OnInitialized
metody nie zadziałałoby. Zamiast tego należy użyćOnAfterRenderAsync
metody , aby upewnić się, że interop języka JavaScript był dostępny.W górnej
<form class="dialog-body">
części pliku w pliku zastąp istniejące wierszeinput
ilabel
następującym kodem:@if (supportSizing) { <label>Size:</label> <input type="range" min="@Pizza.MinimumSize" max="@Pizza.MaximumSize" step="1" @bind="Pizza.Size" @bind:event="oninput" /> }
Naciśnij F5 lub wybierz pozycję Uruchom uruchom>debugowanie.
Dodaj pizzę o rozmiarze rodziny i sprawdź, czy suwak rozmiaru jest wyłączony, ponieważ pominięto renderowanie.
Zamów inną pizzę i sprawdź, czy nadal możesz użyć suwaka rozmiaru dla tej pizzy.
Naciśnij Shift+F5 lub wybierz pozycję Uruchom zatrzymaj>debugowanie, aby zatrzymać aplikację.