有什么区别:
@ViewBuilder财产上
struct SomeView<Content:View>: View {
@ViewBuilder var content: () -> Content
}
Run Code Online (Sandbox Code Playgroud)
中init,存储闭包
struct SomeView2<Content:View>: View {
var content: () -> Content
init(@ViewBuilder content: @escaping () -> Content) {
self.content = content
}
}
Run Code Online (Sandbox Code Playgroud)
中init,存储结果值
struct SomeView3<Content:View>: View {
var content: Content
init(@ViewBuilder content: () -> Content) {
self.content = content()
}
}
Run Code Online (Sandbox Code Playgroud)
所有解决方案似乎都有效。那么为什么人们会选择其中一种而不是另一种呢?
有人在今年的休息室询问,苹果工程师建议存储结果值。
\n\n\n问:但是,\xe2\x80\x99s 为自定义组件使用 @ViewBuilder 的推荐方法是什么:在 init() 中立即调用它并存储视图,\n也不要稍后在主体内调用它并存储视图建造者\本身?
\n答:我们\xe2\x80\x99d 通常建议立即解决它并\n存储视图
\n
https://onmyway133.com/posts/wwdc-swiftui-lounge/#use-viewbuillder
\n例如这个版本
\nstruct SomeView3<Content:View>: View {\n let content: Content\n \n init(@ViewBuilder content: () -> Content) {\n self.content = content()\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |