일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- docker-network
- cron
- 도커
- 인라인핸들러
- Terraform
- onDestory
- GIT
- go
- svelte
- mock
- reactjs
- golang
- 도커컨테이너
- react
- TypeScript
- :=
- nestjs
- PostgreSQL
- smui
- JavaScript
- IAC
- testing
- 번역
- Svelte LifeCycle
- docker
- githook
- apiTest
- ...$$restProps
- GraphQL
- bitwiseNot
Archives
- Today
- Total
Den`s blog
Svelte 의 인라인 핸들러 권장 본문
반응형
Svelte 에서는 React, Vue 와 달리 인라인 핸들러를 권장/지향하고 있다.
React, Vue 에서 인라인 핸들러를 지양하는 이유는 렌더링이 될 때마다 인라인 함수도 재정의가 되어 메모리를 잡아먹기 때문이라고 하고 있다.
그러나 Svelte 는 Virtual DOM 을 사용하지 않을 뿐더러, 컴파일러 자체이기 때문에 그에 따른 메모리 불이익이 없다고 한다.
또 다른 이유로는 인라인 사용시에 할당 연산자 (=) 를 사용하지 않아도 데이터 갱신이 이루어진다. (코드가 짧아진다 !)
let people = [
{ name: 'Den', age: 31 },
];
function add(person) {
person.age += 1;
people = people;
// $$invalidate(0, people);
}
위와 같은 코드가 있다고 했을 때 할당 연산자를 통해 데이터 갱신이 되는 이유는 주석 처리된 코드 때문이다.
할당 연산자를 사용하면 해당 코드가 실행이 되면서 데이터 갱신이 이루어지는데, 인라인 핸들러의 경우를 보자.
{#each people as person (person.id)}
<div on:lick={() => person.age +=1}>
{ person.name } 의 나이는 { person.age } !
</div>
{/each}
위에 처럼 인라인 핸들러를 구성할 수 있는데, 해당 코드는 $$invalidate(0, each_value_1[people_index].age += 1, people)
가 되어서, 데이터 갱신이 이루어진다.
728x90
반응형
'Svelte' 카테고리의 다른 글
Custom component 만들기 ($$restProps, dispatch) (0) | 2022.04.04 |
---|---|
Svelte + typescript + SMUI 설치하기 (0) | 2022.03.19 |
반복 블록에서 key 를 사용하는 이유 (feat. Key 블록) (0) | 2021.06.27 |
일반요소 바인딩 : this, 입력요소 바인딩 : group (0) | 2021.06.26 |
스타일 유효범위 (Hash) 그리고 전역 (0) | 2021.06.21 |
Comments