반응형
    
    
    
  
														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 | 31 | 
													Tags
													
											
												
												- https
- custom command
- CSS
- e2e
- devtools
- typeScript
- ViTE
- TLS
- Testing
- JavaScript
- CloudFlare
- 비동기
- Cypress
- api test
- SSR
- msw
- csr
- web vital
- vue-cli
- vue
- http3
- rendering
- 선택자
- import.meta.env
- aws
- ts error
- vue3
- caching
- QUIC
- svelte
													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 | 
 
            