时间:2021-05-20
@state 绑定值的状态,其属性的修饰官方推荐使用private.上代码(ps:这里没用private 进行修饰,是为了演示区别)
import SwiftUI
这里我们看到 @State var isFavorite = true通过state 进行修饰.这个时候我们点击FilterView的开关 我们只能刷新当前FilterView的界面.注意这里:FilterView(isFavorite: changeButtonTtile) 初始化传入的是changeButtonTtile的value,也就实际值.
下面我们把State注释掉 ,打开@Bingding 那一行
import SwiftUIstruct FilterView: View { @Binding var isFavorite: Bool// @State var isFavorite = true var body: some View { Toggle(isOn: $isFavorite) { } let buttonTitle = isFavorite ? "呕吼" : "顿顿" Text(buttonTitle) }}struct ProductView: View { var titleS: String //:不想让外部访问的变量 需要初始化 @State private var changeButtonTtile = true var body: some View { Button (action: { changeButtonTtile.toggle() }) { let buttonTitle = changeButtonTtile ? "哈哈哈" : "啦啦啦啦" Text(buttonTitle) FilterView(isFavorite: $changeButtonTtile)//:注意这里的取值 变成了$ } }}这里我们运行代码,点击开关,你发现了什么??.ProductView 的UI 也发生了变化.这个时候FilterView 传入的是changeBtnTitle的引用,而不是值.这样你在子视图改变@Binding修饰的值,父视图也会跟着刷新.
使用小结
总结
到此这篇关于SwiftUI学习之state和Binding区别的文章就介绍到这了,更多相关SwiftUI state和Binding区别内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
kafka和mq的区别如下: 1、在架构模型方面,RabbitMQ遵循AMQP协议,RabbitMQ的broker由Exchange,Binding,queu
本文浅析了vc中SDK与MFC的区别,对于初学VC的朋友有一定的学习借鉴价值,详情如下:SDK是指SoftwareDevelopmentKit软件开发包MFC是
1ui-sref、$state.go的区别ui-sref一般使用在...;消息中心$state.go('someState')一般使用在controller里面
SwiftUI中的动画在写动画之前呢先简单回顾一下SwiftUI中动画的几个要点:动画是view发生变化时的渐变效果SwiftUI动画分为隐式动画(.anima
推荐阅读:JavaScript学习笔记之数组求和方法JavaScript学习笔记之数组的增、删、改、查JavaScript中提供了sort()和reverse(