Svelte.js State & Props
- 본 글은 props의 state와 props 정의와 사용 방법에 대해 알아보겠습니다.
- React, Vue와 차이점을 중심으로 기술하겠습니다.
1. 상태 정의
- 상태 정의는 VanillaJs와 같이 변수 선언을 통해 상태를 정의합니다.
- React와 Vue에 비해 보일러플레이트 코드가 적은것이 특징입니다.
- React는 state에 관해 setter를 제공하며 이 setter를 통해 데이터를 변경해야 합니다.(이를 통해 리렌더링)
- Vue는 data function 내부에 return 값이 state가 되며, React와 달리 이에 대한 직접 할당으로 데이터를 변경합니다.
- Svelte의 경우 내부에 변수 및 함수를 정의하며 이를 직접 할당하며 데이터를 변경합니다.
- Array, Object의 경우 주소값을 유지하며 내부 데이터를 조작할 경우 리렌더링이 되지 않습니다. 객체에 대한 재할당을 해야 Svelte가 이를 알아채고 화면을 다시 그립니다.
- state 할당 방식은 Vue와 비슷하게 동작하는 듯 합니다.
2. method or function 정의.
- 내부 function or method의 정의도 vanillaJs와 같이 선언형으로 합니다.
- React의 경우 함수 작성의 경우 스코프내 useCallback, useMemo를 이용하거나, 일반 함수를 선언해 사용합니다.
- Vue의 경우 methods 내부에 함수를 정의해 사용합니다.
- Svelte의 경우 태그내에 함수를 선언하고 사용합니다.
3. Props 전달 방식.
- 기존의 방식과 비슷하지만 간단 명료한 정의와 전달 방식을 갖고 있습니다.
- 컴포넌트에 key={value} 형식으로 전달.
- 자식 컴포넌에서는 export keyword를 통해 props임을 명명.
4. function props 전달
- React : 변수 props와 마찬가지로 key=value 형식으로 전달
- Vue: 변수 props와 마찬가지로 kye=value 형식으로 전달할 수도 있고, @eventName 형식으로 전달해 child component에서 $emit을 통해 호출할 수 있습니다.
- Svelte: 변수 props와 마찬가지로 kye=value 형식으로 전달할 수도 있고, on:eventName 형식으로 전달해 child component에서 createEventDispatcher를 통해 dispatch할 수 있습니다.
git example :
- https://github.com/JongHyuckLee/svelte-study