使用@Observation宏传递值给 Map组件时进行绑定遇到的问题

88 阅读1分钟

问题主要就是我遇到这么个问题:我通过@Observable定义可观察对象,并且通过环境传参数的形式传入到当前视图层级结构中,希望的就是我能在当前层级结构中随处可以取用值,但是我想使用其进行数据的双向绑定的时候我没办法进行绑定,主要报错如下:

@main
struct MapAppApp: App {
    @State private var locationViewModel = LocationViewModel()
    var body: some Scene {
        WindowGroup {
            LocationsView()
                .environment(\.locationViewModel, locationViewModel)
        }
    }
}

主要报错就是

Cannot find '$vm' in scope

解决方案:

需要进行额外的处理,本地创建状态变量,并且同时借助钩子函数onAppear以及onChange监听变化,从而达到对当前视图的数据的双向绑定。

@State private var position: MapCameraPosition = MapCameraPosition.region(.init())

如果不正确的地方欢迎指点...