为随机着色的矩形提取一个单独的视图。在那里,您可以初始化
@State
转换为随机颜色。
struct RandomlyColoredRectangle: View {
@State var color = Color.random
var body: some View {
Rectangle()
.fill(color)
}
}
这是因为的初始化程序
状态
属性在视图的每个生命周期中仅一次。
或者,符合
Equatable
:
struct RandomlyColoredRectangle: View, Equatable {
// since this struct has no properties, the automatically generated '=='
// always returns true
var body: some View {
Rectangle()
.fill(Color.random)
}
}
和使用
RandomlyColoredRectangle
这样地:
RandomlyColoredRectangle().equatable()
equatable()
使视图仅在新的
随机彩色矩形
与旧的不平等
随机彩色矩形
。自从我们
==
始终返回true,视图永远不会更新。