Stateless는 원칙적으로는 변경할 수 없는 위젯입니다.
즉, 한번 생성된 후에는 위젯의 모양이나 동작이 변경되지 않습니다.
단 생성자를 통해 외부의 데이터를 이용할 수 있습니다.
해당 데이터는 바뀔 수 있으며 데이터가 바뀌면 위젯은 다시 만들어집니다.
Stateful보다 비교적 빠르며, 불필요한 렌더링을 줄일 수 있습니다.
주로 위젯이 특정 상태를 유지할 필요가 없을 때 사용됩니다.
Stateful은 내부적으로 상태를 유지하고 변경할 수 있는 위젯입니다.
사용자 입력 또는 다른 이벤트에 따라 상태를 업데이트할 수 있습니다.
생성자를 통해 데이터를 이용할 수도 있지만
내부 상태를 통해 외/내부 데이터 수정이 있을 때마다 위젯을 다시 만들 필요 없이 렌더링 할 수 있습니다.
상태를 유지하기 위해 추가적인 메모리와 계산이 필요하므로, 비교적 Stateless보다는 무겁습니다.
주로 사용자 입력과 같은 외부 요인에 따라 동작이 변경되어야 할 때 사용됩니다.
한눈에 보는 차이점
Stateless | Stateful |
---|---|
변경할 수 없는 상태를 유지, 해당 상태에서 렌더링을 진행. | 내부적으로 상태를 유지하고 변경 가능, 그에 따라 렌더링 진행. |
주로 애플리케이션의 구성 요소로 사용 | 사용자 입력에 따라 동작이 변경되어야 할 때 많이 사용 |
비교적 빠르며, 불필요한 렌더링이 없음. | 추가적인 메모리와 계산이 필요하므로, 비교적 무거움. |