В чем разница между ObjectBinding и EnvironmentObject? - PullRequest
2 голосов
/ 09 июня 2019

Какова цель @EnvironmentObject, когда у нас есть обертка свойства @Binding? У меня возникли проблемы с выяснением, зачем нужен @EnvironmentObject. Я посмотрел на эти сообщения, но это не совсем то, что я ищу EnvironmentObject в SwiftUI Как использовать BindableObjects (EnviromentObject)?

Я также посмотрел на их документацию, которая была слишком тонкой. https://developer.apple.com/documentation/swiftui/environmentobject

1 Ответ

18 голосов
/ 09 июня 2019

Я постараюсь объяснить в общем.У нас есть @State, @ObjectBinding, @EnvironmentObject и @Binding.

  1. @State - объявляется свойство локального значения.Apple рекомендует использовать их как можно меньше, поскольку свойство @State следует использовать только внутри представления и отвечать за мелкие элементы пользовательского интерфейса.
  2. @ObjectBinding - свойство внешней ссылки.На самом деле это ваша модель данных, которая должна отображаться.
  3. @EnvironmentObject - то же самое, что и @ObjectBinding, но она используется во всей среде для других представлений, в то время как @ObjectBinding должна передаваться явно
  4. @Binding - определяет, что свойство не является источником истины и является только ссылкой на реальный источник истины (@State, @ObjectBinding, @EnvironmentObject).Передав одно из свойств из 1-3 точек в представление вида, необходимо объявить свойство в дочернем представлении как @Binding, чтобы создать ссылку, и передать свойство со знаком $, например MessageDetails(message: $message). Для получения дополнительной информации рекомендуем посмотреть Поток данных через SwiftUI

UPD: Решено добавить некоторые важные из сессии.Вы можете @ObjectBinding и @Binding для всех видов, но в этом случае вам нужно будет проходить модель по всем видам глубже, если она нужна для глубокого обзора.@EnvironmentObject и @Environment позволяет вам передать его конкретному представлению в вашей иерархии.В настоящий момент я не нашел реальных примеров от Apple, поэтому проверяю их сеансы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...