@page "/" @inject IJSRuntime JSRuntime Home - Beau Findlay @if (!hasPreviouslyRendered) {

} else {

Hi, I'm Beau.

I'm a UK-based software engineer and I love building cool stuff.

A bit about me

I mostly specialise in back-end C#/.NET development and I've built systems that scale for hundreds-of-thousands of global users.

I've worked with businesses at all sizes and stages and I'm currently heading up the tech as CTO at a cool startup called un:hurd.

} @code { private const string ComponentKey = "ComponentRendered_Home"; private bool hasPreviouslyRendered; protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { var renderedBeforeAsString = await JSRuntime.InvokeAsync("localStorage.getItem", ComponentKey); var previousValue = hasPreviouslyRendered; hasPreviouslyRendered = !string.IsNullOrEmpty(renderedBeforeAsString) && bool.Parse(renderedBeforeAsString); if (!hasPreviouslyRendered) { await JSRuntime.InvokeVoidAsync("localStorage.setItem", ComponentKey, "true"); } if (previousValue != hasPreviouslyRendered) { StateHasChanged(); } } } }