【发布时间】:2020-03-16 12:28:08
【问题描述】:
我想使用 onIncrement 和 onDecrement 在手动(非绑定)模式下使用 Stepper 视图。当我尝试实现下限和上限时,会有一个奇怪的行为,例如。年龄值不低于 1 或高于 10。
如果你尝试下面的代码,你可以在它已经有值“1”之后按两次“-”。它并没有像预期的那样低于 1,但是在另外两次按下“-”按钮后,“-”按钮突然被禁用。如果您然后按“+”,则不会发生任何事情。仅在再按 2 次“+”后,计数器才会按预期做出反应并变为 2。
这是一个错误吗?
struct StepperTest: View {
@State private var age = 5
var body: some View {
VStack {
Stepper("Enter your age", onIncrement: {
if self.age < 10 {
self.age += 1
print("Adding to age")
}
}, onDecrement: {
guard self.age > 1 else { return }
self.age -= 1
print("Subtracting from age")
})
Text("Your age is \(age)")
}
}
}
【问题讨论】:
-
你为什么不想为此使用绑定?
-
@MojtabaHosseini:因为我想要完全控制
-
完全控制什么?您已经可以访问
editingChange,并且可以检测到女巫键被触摸。你还需要什么? -
主要原因是,我想使用类似 Redux 的架构,其中状态仅由单独模块中的操作更改。使用绑定,可以在各种视图中修改状态。
-
这就是所谓的单向数据流架构,和这个没有冲突。