Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

369
Visualizações
¿Cómo puedo guardar una instancia de Blazor Component en una variable y representarla en mi .cshtml?

Teniendo en cuenta que tengo una clase llamada Tab .

 public class Tab { public Guid Id { get; } public bool IsVisible { get; set; } protected Tab() { Id = Guid.NewGuid(); } }

Quiero acoplar estrictamente estas pestañas a una instancia de Blazor Component y representar esas instancias iterando sobre las pestañas. Quiero tener control sobre cuándo se crea un Componente y cuándo se destruye nuevamente.

Quiero hacer esto porque de esa manera puedo conservar el estado de cada componente.

Aquí está el problema con el enfoque fácil. Teniendo en cuenta algo como esto:

 @code { public void CreateNewTabAndRemoveOldTab() { Tabs.RemoveAt(0); Tabs.Add(new Tab()); } } foreach (var tab in Tabs) { <MyTabComponent/> }

La pestaña recién creada simplemente asumirá el estado de la pestaña eliminada. No se llamará a OnInitialized .

He RenderFragment , pero no parece su propiedad de trabajo. El problema es que Blazor Framework seguirá decidiendo cuándo se crea un nuevo componente (llamando así a OnInitialized ) o cuándo se usa una instancia existente.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Si leí esto correctamente, Tab es una clase, no un componente. Debe desacoplar su lista de pestañas del componente que las representa. Su lista de pestañas vive en un servicio, el alcance depende de lo que esté haciendo con ellas. Su componente de pestaña muestra la pestaña actualmente seleccionada en la lista. Si muestra un poco más de su lógica, probablemente pueda mostrarle un ejemplo de trabajo relevante.

over 4 years ago · Santiago Trujillo Relatório

0

Mira esto

@ref es una referencia a su componente, se agrega a la lista de componentes.

 @implements IDisposable @foreach (var tab in tabs) { <MyTabComponent @ref=@TabRef Tab=@tab /> } @code { List<Tab> tabs = new List<Tab>(); List<MyTabComponent> tabsComp = new List<MyTabComponent>(); MyTabComponent TabRef { set { tabsComp.Add(value); } } public void CreateNewTabAndRemoveOldTab() { tabs.RemoveAt(0); tabs.Add(new Tab()); } public void Dispose() { } }
over 4 years ago · Santiago Trujillo Relatório

0

MisTabs.razor

 <CascadingValue Value="@this" IsFixed="true"> foreach (var tab in Tabs) { <MyTabComponent/> } </CascadingValue> @code{ private List<MyTabComponent> Tabs; public void Register(MyTabComponent tab) { this.Tabs.Add(tab); } public void UnRegister(MyTabComponent tab) { this.Tabs.Remove(tab); } }

MiTabComponent.razor

 @implements IDisposable <div></div> @code{ [CascadingParameter] protected MyTabs Context { get; set; } protected override void OnInitialized() { Context?.Register(this); // implement your logic here } public void Dispose() { Context?.UnRegister(this); // implement your logic here } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda