[Blazor] OnInitialized

C#/Blazor 2022. 10. 4. 23:29
728x90
반응형
728x170

생성자 같은 초기화 처리는 Blazor 에서 OnInitialized 함수를 이용해 처리합니다.
@code 에서 override OnInitialized 메서드를 이용해 처리합니다.

protected override void OnInitialized()
{
    todos.AddRange(new List<TodoItem>
    {
        new TodoItem { Content = "Homework", IsDone = true},
        new TodoItem { Content = "Health", IsDone = false },
    });
}

초기에 2개의 값을 넣었습니다

전체 코드 - Todo.razor

@page "/todo"
@using Blazor.AppTest.Data

<h3>Todo</h3>

<input placeholder="new todo" @bind="newTodo" />
<button @onclick="AddTodo">Add todo</button>

<br />
<br />

<h3>Todo List (@todos.Count(todo => !todo.IsDone))</h3>

<ul>
    @foreach (var todo in todos)
    {
        <li>
            <input type="checkbox" @bind="todo.IsDone" />
            <input @bind="todo.Content" />
        </li>
    }
</ul>

@code {
    private List<TodoItem> todos = new();
    private string? newTodo;

    protected override void OnInitialized()
    {
        todos.AddRange(new List<TodoItem>
        {
            new TodoItem { Content = "Homework", IsDone = true},
            new TodoItem { Content = "Health", IsDone = false },
        });
    }

    private void AddTodo()
    {
        if (!string.IsNullOrWhiteSpace(newTodo))
        {
            this.todos.Add(new TodoItem { Content = newTodo });
            this.newTodo = string.Empty;
        }
    }
}


실행결과

[Source]
https://github.com/kei-soft/Blazor.AppTest

728x90
반응형
그리드형
Posted by kjun

댓글을 달아 주세요