如何解决@Published发布值时,它会包装吗?
我有出版商
@Published var feedData = Feed()
这一段代码,它会监听
// some View
.onReceive(feed.$feedData) { feedData in
if feedData.personalTasks.count > 0 {
withAnimation(.easeOut(duration: 0.3)) {
showCards = true
}
}
}
问题是.onRecieve何时执行?每次访问feedData时?还是每次feedData的任何属性被更改?该属性包装器如何知道feedData中的某事何时更改?
解决方法
.onReceive
将在每次feedData
更改时执行,此时Published
发布者将发出一个值。
如果Feed
是一个值类型,例如struct
,那么只要它的任何属性发生变化,Swift的值类型语义都将确保整个对象都被更改。
如果Feed
是引用类型-class
,则只有将feedData
设置为其他实例时,才会发出值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。