들불

if for 는 그냥 이렇게.. 그리고 중간 계산 꼼수

· 2023-03-15 (수) 02:02:32 · 1013

 

if, for를 html 상에서 바로 구현하는 방법



 

{#if list?.length> 0}

 

  {#each list as item ,i} 

 

  <div>{i+1}</div><div>{item.name}</div>

 

  {/each}

 

{:else}

 

<div>결과가 없습니다.</div>

 

{/if}



 

그런데 약간 아쉬운 점은

 

예를들어 {#each list as item,i}의 item 의 값을 추가로 계산해서 특정한 변수에 담아 최종 합계금액 구하는 등의 계산은

 

못한다. 아주 못하는 건 아니고 꼼수를 쓰는 방법 또는 여기에 컴포넌트를 넣어서 계산을 진행시키고 결과 값을 store나 바인팅으로 전달하는 방식을 사용할 수 있습니다. 

 

2차 3차 뭔가 더욱 복잡해진 결과와 표현을 만들어야하는 경우는 당연히 컴포넌트를 사용해야 합니다.

 

반면 단순 계산만 진행한다고한다면, 꼼수로 {@const } 사용할 수 있습니다.



 

let list =[1,2,3,4,5,6,7]

let sum =0;


 

{#each as item}

 

+{item}

//???? 이곳에서 item 의 값을 sum 에 더해줘야한다면

// 쉽게는 아래와 같이

{sum = sum+item}

 

//라고 작성하기 쉽다.

//그런데 문제는 위의 sum 이 반복적으로 화면에 출력된다는 것이다.

// 순수하게 sum 에 더하기만 하려면?

// 기존 해결방법은 이부분을 컴포넌트로 분리하여 사용하거나

// 스크립트 상에서 반복문을 한번 더 돌려줘서 더해주는 작업을 해야 했습니다.

//그런데 꼼수를 써서 간단하게 해결할 수 있습니다.

{/each}

합계 : {sum}

 

이를 해결한 꼽수 입니다.

 

//{sum = sum+item} 을 아래와 같이 @const a 라는 블록 상수에 넣어줍니다.

{@const a = sum = sum+item}

{@const} 블록 안에서만 사용되는 블록 상수로 저장하면 출력을 방지하면서 소기의 목적인

다른 변수에 저장을 할 수 있게 됩니다.

 

|
댓글을 작성하시려면 로그인이 필요합니다.

JS프레임워크

269건
+
분류 제목 글쓴이 날짜 조회
SVELTE 23-05-31 조회 3,119
SVELTE 23-05-29 조회 1,714
SVELTE 23-05-28 조회 1,518
기타 23-05-22 조회 1,132
SVELTE 23-05-22 조회 1,250
SVELTE 23-05-21 조회 1,138
SVELTE 23-05-17 조회 1,392
SVELTE 23-05-15 조회 1,755
SVELTE 23-05-15 조회 1,104
SVELTE 23-05-03 조회 1,301
SVELTE 23-05-02 조회 1,556
SVELTE 23-05-01 조회 2,519
SVELTE 23-04-25 조회 1,510
SVELTE 23-04-25 조회 1,351
SVELTE 23-04-20 조회 5,261
SVELTE 23-04-14 조회 1,094
SVELTE 23-04-10 조회 1,442
SVELTE 23-04-08 조회 1,110
SVELTE 23-04-08 조회 1,793
SVELTE 23-03-17 조회 5,386
SVELTE 23-03-15 조회 1,014
SVELTE 23-03-15 조회 1,096
SVELTE 23-03-15 조회 2,164
SVELTE 23-03-14 조회 1,811
SVELTE 23-03-14 조회 1,385
SVELTE 23-03-14 조회 1,587
SVELTE 23-03-03 조회 1,284
SVELTE 23-03-03 조회 1,293
SVELTE 23-03-01 조회 3,362
SVELTE 23-03-01 조회 4,089