SwiftUI中无关View因TimerPublisher更新重绘问题咨询
SwiftUI无关视图因属性更新重绘的疑问
Xcode版本:15.2 (15C500b)
根据Apple WWDC关于View“标识”的内容,我的预期是:当SwiftUI View中的一个属性变化时,不应导致另一个无关View的绘制更新。
问题: 修改一个属性(TimerPublisher)的值时,确实会引发无关View的刷新。
示例中,Timer每秒触发一次,更新Date,对应的Text视图更新符合预期。但第二个Text视图也发生了变化——给它添加随机颜色的background后,“Hello, World”的背景色每秒都会变化。
struct TestView: View { @State private var date = Date.now @State private var timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect() var body: some View { VStack { Text(date.formatted()) .onReceive(timer) { newDate in date = newDate } Text("Hello, World") .background(Color.random) // 当timer发布消息时,这里会变化! } } } extension Color { static var random: Color { return Color( red: .random(in: 0...1), green: .random(in: 0...1), blue: .random(in: 0...1) ) } } #Preview { TestView() }

这是预期行为吗?我的假设是否有误,或是遗漏了某些要点?
内容的提问来源于stack exchange,提问作者Womble
相关产品推荐
相关产品推荐

