반응형
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
- 엑티브엑스
- 알람프로그램
- qt 설치
- 자바
- 잡담
- 마영전
- HTML
- QTcpServer
- Qt OpenGL
- 오토바이
- vuejs
- 디자이어HD
- 윈도우7
- Java
- 정성하
- 바이크
- Qt4
- Qt 소켓프로그래밍
- 재귀함수
- 스타2
- QT
- android SAF
- c언어
- 자료구조
- 안드로이드
- 고속도로
- FFI
- 스타크래프트2
- 이륜차
- 양평역
Archives
- Today
- Total
프로그래밍과 잡담
[Svelte] 배열의 아이템의 정보 업데이트 본문
연습 삼아 스벨트로 게시판을 만들고 있는데, 헤메다가 해결을 해서 나중을 위해 적어 놓는다.
항상 그렇지만 해결 방법은 크게 별거 없는거지만 찾는 과정이 어렵다.
스벨트에서는 $state를 사용하면 값이 변경 될 때 마다 다시 그려준다.
근데 문제는 배열인 경우가 항상 문제다.
특히나 객체로 된 배열들이다.
// board.ts
class Board {
title =""
content = ""
readCount = 0
}
// +page.svelte
<script>
let boards: Board[] = $state([]) // 대충 사용
//...
function updateReadCount(idx: number) {
let board = boards[idx]
board.readCount = board.readCount + 1; // 이렇게 하면 업데이트가 발생 안함.
boards[idx] = board
}
</script>
대충 만들었다만, 위의 코드를 보면 게시글을 클릭 했을 때, 조회수를 업데이트를 하는 부분이다.
주석으로도 되어 있지만, 저렇게 사용하면 오류가 발생함.
스벨트에서는 readCount 라는 프로퍼티만 변경을 하면 인식을 못하는거 같다.
그래서 해결 방법은 아래와 같음.
// board.ts
class Board {
title =""
content = ""
readCount = 0
}
// +page.svelte
<script>
let boards: Board[] = $state([]) // 대충 사용
//...
function updateReadCount(idx: number) {
let board = boards[idx]
board.readCount = board.readCount + 1;
let newBoard = new Board() //신규 객체를 생성
newBoard.title = board.title
// 모든 프로퍼티를 복사.. 쓰기 귀찮아
// boards[idx] = board; // 이렇게 하면 업데이트가 안됨.
boards[idx] = newBoard; // 업데이트 됨.
}
</script>
대충 보면 알겠지만, 차이 점은 신규 객체를 만들어서 거기에 다 복사를 했다는 거임.
그걸 안하면 스벨트에서 인식을 안함.
끗.
반응형
'프로그래밍 > Frontend' 카테고리의 다른 글
| Vue.js, TypeScript 관련 삽질 (0) | 2021.07.25 |
|---|---|
| [Vue.js] 컴포넌트의 데이터가 변경되는걸 watch 하는법 (0) | 2020.09.02 |
| [vue.js] template에서 id 셋팅하기 (0) | 2020.08.11 |
Comments