swiftui - SwiftUI:将应用程序初始化代码放在哪里,这样它就不会在预览中运行?
问题描述
我正在尝试查找不应在预览模式下运行的应用程序初始化代码的放置位置。我已经看到几个答案表明以这种方式拆分应用程序行为(启动与预览)是不正确的,但我不同意:许多应用程序需要进行额外的设置(例如连接到数据库、启动后台任务、调用 API 等) '不适合预览(静态测试数据最有意义)。
在预览模式下,Xcode 实际运行应用程序并调用 AppDelegate.applicationDidFinishLaunching,因此那里的任何启动后初始化代码都会被触发。
运行应用程序设置代码以使其不在预览中运行的推荐方法是什么?
解决方案
Preview Live,我假设你的意思是,创建完整的窗口场景上下文并在那里注入要预览的视图,因此调用所有应用程序和场景委托方法,包括实例化 root ContentView
,但不显示根视图,即。它body
没有被调用。
因此,您可以通过放置代码、启动所有重/网络/等来实现您的目标。根视图.onAppear
回调中的操作。实际上,这对您的用户也有好处,因为这种方法可以快速启动应用程序并呈现初始 UI。
推荐阅读
- c++ - 如何使用 C++ 中的迭代器在集合内添加元素?
- javascript - 一键JS幻灯片序列
- wordpress - Weglot 与 WordPress 和 Woocommerce
- angular - 从组件内部发射到超级组件
- php - 无法定义 laravel 视图的 href 元素
- typescript - 如何从 TypeScript 中的未知类型对象中读取密钥
- java - 可选择在 Streams API 函数调用链的中间调用 .distinct()
- angular - 有没有办法完全删除 spring Security 提供的凭据页面并使用自定义身份验证提供程序进行 CSRF 实现?
- javascript - 如何使用
- python - 如何在python中出现异常后重复代码