Day27:用 EnvironmentObject 传递数据

前言

今天来创建具体的 Featured View。

实作

  • 创建一个 FeaturedView file

    在 TabView 里呼叫 RecipeFeaturedView 实例:
  • 在 RecipeFeaturedView 传递 Recipe 数据
    在 RecipeListView 里是通过呼叫 RecipeModel 的实例传递数据的:
@ObservedObject var model = RecipeModel()

如果在 RecipeFeaturedView 中同样创建 RecipeModel 的实例也可以达到目的,
只是这样就需要管理两组数据了,
并不方便。
在这个 app 的 Views 里,
可以看到很明显的层级结构,
最上面是 RecipeTabView -> RecipeFeaturedView、RecipeListView->RecipeListView,
之前是在 RecipeListView 中引用数据的,
其实可以把引用数据放在最高层级 RecipeTabView 里,
其他层级都可以引用这一组数据了。
不过这样做仍然需要不停的引用这一组数据,
现在可以用 the RecipeTabView modifier 达到这个目的。

  1. 在 RecipeTabView 中创建一个 RecipeModel 的实例作为 the EnvironmentObject
    在 RecipeListView 中删除引用数据的实例:
  2. 在 RecipeTabView 中的 TabView 後添加 environmentObject 并添加 RecipeModel 的实例:
  3. 在 RecipeListView 中宣告一个属性
@EnvironmentObject var model:RecipeModel

这样就可以引用数据了。


<<:  [DAY 29] _STM32_内部Flash

>>:  【後转前要多久】# Day27 Angular - 介绍

【设计+切版30天实作】|Day7 - 设计出无外框式的三栏式pros区块

设计大纲 上一个区块卖完小广告後,今天马上就给它塞个平台的优点进来,这样可以让使用者有「感同身受」的...

IDE是魔法书,而Code则是魔法,咏唱出属於自己的AWS

云端魔法 今天会使用vscode,来建立AWS上的环境,以下架构图为主: 首先,开启VScode然後...

15 | WordPress 社交网路服务图示 Social Icons Block

「社交网路服务图示区块」可让你将社交媒体图示新增到任何页面或文章,将访客导向到你的社交媒体个人档案...

[Lesson12] RecyclerView

activity_main: <?xml version="1.0" en...

CSS微动画 - 善加利用伪元素可以做出更多变化

Q: 别人网站上看到的动态效果变化很多,还是引写好的套件(库)进专案吧? A: 只引进一个套件(库...