State 구조
앞서 Meta, State 페이지에서 Meta 데이터의 경우 Builder 및 Renderer 페이지에서 추상화되어 생성 및 사용되기 때문에 사용자는 그 구조에 대해 알 필요가 없다고 이야기했습니다. 하지만 State의 경우 사용자가 필요에 의해 직접 업데이트해야 할 때가 있으므로 그 구조를 알 필요가 있습니다.1 지금부터는 State의 구조에 대해 설명하도록 하겠습니다.
State는 하나의 객체이며, 레이아웃-세부 컴포넌트 구조로 중첩된 객체 형식의 자료구조입니다. State의 구조를 대략적으로 나타내면 다음과 같습니다.
{
[레이아웃 타입]: {
[레이아웃 key]: {
[세부 컴포넌트 key]: [세부 컴포넌트 value]
} // 이 값은 레이아웃 타입에 따라 배열이 될 수도 있습니다.
}
}
예시로 폼 및 테이블 정보를 가진 State 데이터의 일부를 보여드리겠습니다.
{
"forms": {
"forms1": {
"name": "세희"
}
},
"tables": {
"tables1": [
{
"name": "영희",
"age": 14
},
{
"name": "철수",
"age": 12
},
{
"name": "영수",
"age": 10
},
{
"name": "맹구",
"age": 14
}
]
}
}
State는 이렇듯 중첩 객체들의 묶음입니다. 이제부터는 각 Key와 Value가 어떻게 정해지는지 알아보겠습니다.
최상단 Key : 레이아웃 타입
앞선 문서에서 말했듯 레이아웃 컴포넌트에는 헤더, 폼, 테이블, 다이얼로그, 코드 에디터, 노드 에디터가 있습니다. 레이아웃 타입 값이란 이 값들을 의미하는 내부적으로 정의된 문자열을 말합니다.
각 타입별로 정의된 문자열(이하 타입 문자열)은 다음과 같습니다.
| 레이아웃 타입 | State 내 타입 문자열 |
|---|---|
| 폼 | forms |
| 테이블 | tables |
| 다이얼로그 | dialogs |
| 코드 에디터 | codeeditors |
| 노드 에디터 | nodeeditors |
| 섹션 | sections |
헤더의 경우 State로 정의할 만한 데이터가 없으므로 State 타입이 존재하지 않습니다. 화면을 구성하는 Meta와 값을 나타내는 State가 다르다는 것을 항상 기억하세요.
섹션(sections)은 Render as React 모드에서 사용 가능한 Section을 배치했을 때 생성되는 State 타입입니다.
이렇듯 State의 맨 상단 key는 타입 문자열로 이루어져 있습니다. 따라서 아무런 변경도 가하지 않은 State의 초기값은 다음과 같습니다.
{
"forms": {},
"tables": {},
"dialogs": {},
"codeeditors": {},
"nodeeditors": {},
"sections": {},
}