Exercício - Melhorar a interatividade de aplicativo com eventos de ciclo de vida
A pizzaria decidiu que quer vender uma pizza especial tamanho família que só está disponível no tamanho 24 polegadas. O aplicativo de pizza atual tem um controle deslizante de tamanho que não dá suporte a uma pizza de tamanho único. Você será solicitado a adicionar a nova pizza tamanho família e a desabilitar a opção de tamanho dessa pizza.
Neste exercício, você altera o banco de dados de pizza para adicionar a pizza tamanho família e alterar o modelo de pizza para dar suporte à nova pizza. Para lidar com eventos de ciclo de vida do componente Blazor, faça alterações na caixa de diálogo Configurar pizza a fim de lidar com o caso de tamanho fixo.
Criar o tamanho de pizza família
Primeiro, você adiciona a nova funcionalidade FixedSize
ao modelo de pizza e cria a pizza tamanho família no banco de dados de pizza.
No Explorer do Visual Studio Code, expanda Modelos e selecione PizzaSpecial.cs.
No arquivo PizzaSpecial.cs, após a propriedade
ImageUrl
, adicione a seguinte nova propriedade:public int? FixedSize { get; set; }
Abra o arquivo Pizza.cs e substitua o método
GetBasePrice
pelo seguinte código:public decimal GetBasePrice() => Special is { FixedSize: not null } ? Special.BasePrice : (decimal)Size / DefaultSize * Special?.BasePrice ?? 1;
O código agora considera um tamanho especial que tem um
FixedSize
quando retornaBasePrice
.Expanda Dados e selecione SeedData.cs.
No arquivo SeedData.cs, adicione o código a seguir da nova pizza tamanho família ao final da declaração de matriz
specials
no métodoInitializeAsync
.new() { Id = 9, Name = "Margherita Family Size", Description = "24\" of pure tomatoes and basil", BasePrice = 14.99m, ImageUrl = "img/pizzas/margherita.jpg", FixedSize = 24 }
A classe
SeedData
preenche previamente o banco de dados de pizza com pizzas especiais. Você precisa excluir o banco de dados existente para que outroPizzaSpecial
seja criado. No Explorer, selecione e exclua os arquivos pizza.db, pizza.db-shm e pizza.db-wal.No Visual Studio Code, pressione F5or ou selecione Executar>Iniciar Depuração.
No aplicativo, selecione a nova pizza Marguerita Tamanho Família.
No formulário do pedido, observe que você ainda pode alterar o tamanho da pizza.
Pressione Shift+F5 ou selecione Executar>Parar Depuração para interromper o aplicativo.
Remover o controle deslizante de tamanho
O componente ConfigurePizzaDialog
usa um elemento HTML range
para permitir que o cliente selecione o tamanho da pizza. Uma forma de desabilitar a entrada de usuário é omitir condicionalmente a renderização do controle de usuário.
No Explorer do Visual Studio Code, expanda Compartilhado e selecione ConfigurePizzaDialog.razor.
Na diretiva
@code
, nas propriedades existentes, adicione os seguintes membros:bool supportSizing = true; protected override void OnInitialized() { if (Pizza is { Special.FixedSize: not null }) { Pizza.Size = Pizza.Special.FixedSize.Value; supportSizing = false; } }
O campo
supportSizing
usa como padrãotrue
, mas se a pizza tiver um tamanho fixo, o campo será definido comofalse
. A substituição do método de ciclo de vidaOnInitialized
define o tamanho da pizza para o tamanho fixo e desativa o suporte a dimensionamento.Observação
Se o código contasse com a interoperabilidade JavaScript, o uso do método
OnInitialized
não teria funcionado. Nesse caso, você precisaria usar o métodoOnAfterRenderAsync
para garantir que a interoperabilidade JavaScript estivesse disponível.Próximo à parte superior do arquivo no
<form class="dialog-body">
, substitua as linhas existenteslabel
einput
pelo seguinte código:@if (supportSizing) { <label>Size:</label> <input type="range" min="@Pizza.MinimumSize" max="@Pizza.MaximumSize" step="1" @bind="Pizza.Size" @bind:event="oninput" /> }
Pressione F5 ou selecione Executar>Iniciar Depuração.
Adicione a pizza tamanho família e verifique se o controle deslizante de tamanho está desabilitado porque ele está omitido da renderização.
Peça uma pizza diferente e verifique se você ainda pode usar o controle deslizante de tamanho para essa pizza.
Pressione Shift+F5 ou selecione Executar>Parar Depuração para interromper o aplicativo.