반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- caching
- csr
- custom command
- vue
- vue3
- api test
- vue-cli
- e2e
- rendering
- TLS
- ts error
- devtools
- ViTE
- 선택자
- SSR
- CSS
- CloudFlare
- JavaScript
- svelte
- aws
- import.meta.env
- http3
- web vital
- typeScript
- QUIC
- https
- Cypress
- Testing
- msw
- 비동기
Archives
- Today
- Total
Develop Note by J.S.
[Svelte] Svelte 기본문법 #2 (Store) 본문
반응형
Store
Store란 Svelte에서 상태관리(state management) 기능을 제공하는 저장소
1) 기본사용법
- 수동 구독 및 수동 리소스 해지
<script>
import { onDestroy } from 'svelte';
import { count } from './stores.js';
let count_value;
// 구독 리턴 값은 구독해지 기능
const unsubscribe = count.subscribe(value => {
count_value = value;
});
// 해제 하지 않는 경우 메모리 누수 발생
onDestroy(unsubscribe);
</script>
<h1>The count is {count_value}</h1>
- 자동 구독 : subscribe(), unsubscribe()의 일련의 기능을 자동화 하는 방법으로, $ 기호 사용 시 자동으로 처리됩니다.
* 주의 사항 : store 변수 정의는 <script> 하단에 바로 import 해야 하며(block범위에서 변수 정의 금지), $ 기호는 일반 변수 선언 시 사용할 수 없습니다.
// store.js
import { writable } from 'svelte/store'; // read, write, delete가 가능한 store 모듈
export const count = writable(초기값);
// app.svelte
<script>
import { count } from './store.js'
//$ 기호 사용시 자동 구독, 해당 컴포넌트 해제 시에 자동으로 구독 해지
const onIncrement = () => {
$count = $count + 1; // store state는 $기호 사용
}
</script>
<button on:click={onIncrement}>+</button>
2) store의 사용자 정의 method로 구현
// store.js
import { writable } from 'svelte/store'; // read, write, delete가 가능한 store 모듈
function createCount() {
const { subscribe, set, update } = writable(0);
// subscribe - store 값 변경 감지 및 반영
// set - store 값 초기화
// update - store 일부 값 update
const increment = () => update( count => count + 1);
const decrement = () => update( count => count - 1);
const reset = () => set(0);
return {
subscribe,
increment,
decrement,
reset
}
}
export const count = createCount();
// app.svelte
<script>
import { count } from './store.js'
const onIncrement = () => {
count.increment();
}
</script>
<button on:click={onIncrement}>+</button>
참고사이트
반응형
'FrontEnd > Svelte' 카테고리의 다른 글
[Svelte] 프로젝트 시작하기 (0) | 2024.01.18 |
---|---|
[Svelte] Svelte 기본문법 #5 (Lifecycle) (0) | 2024.01.17 |
[Svelte] Svelte 기본문법 #4 (Transition) (0) | 2024.01.17 |
[Svelte] Svelte 기본문법 #3 (Slot) (0) | 2024.01.17 |
[Svelte] Svelte 기본문법 #1 (0) | 2024.01.17 |