Depuis iOS 17, la syntaxe de onChange() a été simplifiée.
Dans les extaits de code qui suivent, je vous montre comment le onChange() était réalisé avant iOS 17.
Si vous utilisez cette syntaxe avec iOS 17 ou plus, vous obtiendrez un message du genre « 'onChange(of:perform:)' was deprecated in iOS 17.0: Use `onChange` with a two or zero parameter action closure instead. ».
struct ContentView: View {
@State private var uneVariable: String = ""
var body: some View {
VStack {
...
}
// syntaxe avant iOS 17
.onChange(of: uneVariable, perform: { nouvelleValeur in
print(uneVariable) // affiche la nouvelle valeur
print(nouvelleValeur) // affiche la nouvelle valeur
...
})
}
}
Si, dans le bloc de code, vous n'avez pas besoin de travailler avec la valeur de la variable, vous pouvez l'ignorer en utilisant une barre de soulignement.
struct ContentView: View {
@State private var uneVariable: String = ""
var body: some View {
VStack {
...
}
// syntaxe avant iOS 17
.onChange(of: uneVariable, perform: { _ in
...
})
}
}
Dans le cas où vous avez besoin de connaître la valeur originale de même que la nouvelle valeur, vous pouvez mettre le vrai nom de la variable entre crochets carrés, devant le nom que vous désirez donner à la nouvelle valeur.
struct ContentView: View {
@State private var uneVariable: String = ""
var body: some View {
VStack {
...
}
// syntaxe avant iOS 17
.onChange(of: uneVariable, perform: { [uneVariable] nouvelleValeur in
print(uneVariable) // affiche la valeur originale
print(nouvelleValeur) // affiche la nouvelle valeur
})
}
}
▼Publicité