SwiftUI - @state, observe environment. ..상태프로퍼티

Sunho·2023년 3월 24일
0

SwiftUI

목록 보기
2/2

@Environment

구조체인데 View의 환경과 관련된 프로퍼티들을 가지고 있다.
A property wrapper that reads a value from a view’s environment.

특정 뷰에서 EnvironmentValues의 저장된 값들을 읽어들여(읽기전용!!) 뷰 구성하는데 사용한다.
그렇다면 어떻게 오똫게 저장할까?
1. 환경키 만들기~ EnvironmentKey setting

Private struct thisiskey : EnvironmentKey{
	static let key = "value입니다"}

2.EnvironmentValues 정의
이 타입에 우리가 사용할 이름의 연산프로퍼티 추가> gettser, setter정의까지

@State

  • view 내부에서 특정 뷰의 상태를 나타내는 변수
  • 뷰내부에서 밖에 사용이 불가능해서 Private로 선언
  • 하위뷰나 다른 뷰에서 사용하려면 @binding 붙여야함
  • state property에 해당하는 변수 값이 변경되면 view 재랜더링> 항상최신값가질수있다.
  • 뷰전체가 랜더링되면 비효율적이기에 하위뷰에 데이터 변동 반영되는 뷰만 따로 뺀다.
  • 상태 프로퍼티와 바인딩할때는 변수앞에 $붙여주면됨

ObservedObject

우선 ObservableObject프로토콜을 따르는 객체가 필요.
이 객체의 상태가 변하면 뷰를 다시 그려준다. 뷰 자체를 refresh!

StateObject

위와 마찬가지로 ObservableObject프로토콜을 따라야 하고

A state object behaves like an observed object, except that SwiftUI knows to create and manage a single object instance for a given view instance, regardless of how many times it recreates the view.

stateObject는 하나의 객체!! view가 초기화되든 상관없이 별개의 객체로 관리.

profile
앱개발자

0개의 댓글