Uso de Slice e OptionalSlice
August 26, 2025 · View on GitHub
Slice e OptionalSlice são componentes da biblioteca AppState que permitem acessar partes específicas do estado da sua aplicação. Eles são úteis quando você precisa manipular ou observar uma parte de uma estrutura de estado mais complexa.
Visão Geral
- Slice: Permite acessar e modificar uma parte específica de um objeto
Stateexistente. - OptionalSlice: Funciona de forma semelhante a
Slice, mas é projetado para lidar com valores opcionais, como quando parte do seu estado pode ou não sernil.
Principais Características
- Acesso Seletivo ao Estado: Acesse apenas a parte do estado de que você precisa.
- Segurança de Threads: Assim como outros tipos de gerenciamento de estado no AppState,
SliceeOptionalSlicesão seguros para threads. - Reatividade: As visualizações do SwiftUI são atualizadas quando a fatia do estado muda, garantindo que sua interface do usuário permaneça reativa.
Exemplo de Uso
Usando Slice
Neste exemplo, usamos Slice para acessar e atualizar uma parte específica do estado — neste caso, o username de um objeto User mais complexo armazenado no estado da aplicação.
import AppState
import SwiftUI
struct User {
var username: String
var email: String
}
extension Application {
var user: State<User> {
state(initial: User(username: "Guest", email: "guest@example.com"))
}
}
struct SlicingView: View {
@Slice(\.user, \.username) var username: String
var body: some View {
VStack {
Text("Nome de usuário: \(username)")
Button("Atualizar Nome de Usuário") {
username = "NewUsername"
}
}
}
}
Usando OptionalSlice
OptionalSlice é útil quando parte do seu estado pode ser nil. Neste exemplo, o próprio objeto User pode ser nil, então usamos OptionalSlice para lidar com este caso com segurança.
import AppState
import SwiftUI
extension Application {
var user: State<User?> {
state(initial: nil)
}
}
struct OptionalSlicingView: View {
@OptionalSlice(\.user, \.username) var username: String?
var body: some View {
VStack {
if let username = username {
Text("Nome de usuário: \(username)")
} else {
Text("Nenhum nome de usuário disponível")
}
Button("Definir Nome de Usuário") {
username = "UpdatedUsername"
}
}
}
}
Melhores Práticas
- Use
Slicepara estado não opcional: Se o seu estado for garantido como não opcional, useSlicepara acessá-lo e atualizá-lo. - Use
OptionalSlicepara estado opcional: Se o seu estado ou parte do estado for opcional, useOptionalSlicepara lidar com casos em que o valor pode sernil. - Segurança de Threads: Assim como
State,SliceeOptionalSlicesão seguros para threads e projetados para funcionar com o modelo de concorrência do Swift.
Conclusão
Slice e OptionalSlice fornecem maneiras poderosas de acessar e modificar partes específicas do seu estado de maneira segura para threads. Ao aproveitar esses componentes, você pode simplificar o gerenciamento de estado em aplicações mais complexas, garantindo que sua interface do usuário permaneça reativa e atualizada.
Esta tradução foi gerada automaticamente e pode conter erros. Se você é um falante nativo, agradecemos suas contribuições com correções por meio de um Pull Request.