if 블록
우리가 일반적으로 알고 있는 if문의 문법과 비슷하다.
Header폴더 하위에 IsLoggedIn 컴포넌트를 작성하자.
<!--./src/Component/Header/IsLoggedIn.svelte-->
<script>
let isLoggedIn = false;
function loginLogout() {
isLoggedIn = !isLoggedIn;
}
</script>
<div>
{#if !isLoggedIn}
<h2>로그인을 해주세요.</h2>
<button on:click={loginLogout}>로그인</button>
{/if}
{#if isLoggedIn}
<h2>로그인됐습니다.</h2>
<button on:click={loginLogout}>로그아웃</button>
{/if}
</div>
<!--./src/Component/Header/Header.svelte-->
<script>
import IsLoggedIn from './IsLoggedIn.svelte';
</script>
<nav>
<a href="#/">Home</a>
<a href="#/Contact1">Contact1</a>
<a href="#/Contact2/1234">Contact2</a>
</nav>
<IsLoggedIn />
<style>
a {
text-decoration: none !important;
}
</style>
이전 포스팅과 비슷한 느낌도 있지만, 명확한 차이는 이전 포스팅은 변수(state)의 변경을 감지해서 변경된 변수를 보여주는 형식이라면, 이번 포스팅은 변수(isLoggedIn)이 참인지 거짓인지를 통해서 html 자체를 다르게 보여주는 방식이다.
else 블록
<!--./src/Component/Header/IsLoggedIn.svelte-->
<script>
let isLoggedIn = false;
function loginLogout() {
isLoggedIn = !isLoggedIn;
}
</script>
<div>
{#if !isLoggedIn}
<h2>로그인을 해주세요.</h2>
<button on:click={loginLogout}>로그인</button>
{:else}
<h2>로그인됐습니다.</h2>
<button on:click={loginLogout}>로그아웃</button>
{/if}
</div>
if만 사용할때와 다른점은 else에서는 "#"이 아닌 ":" 를 쓴다.
else if 블록
if, else if와 else까지 총 세가지 상황을 만들어 보겠다.
이전 포스팅 에서 만들 더하기 빼기함수를 사용하겠다.
<!--./src/Component/Home/Home.svelte-->
<h1>Home</h1>
<div class="numbers-container">
<div class="number-container">
<h2>number : {number}</h2>
<button on:click={plusNumber}>Plus</button>
<button on:click={minusNumber}>Minus</button>
</div>
<div class="number-container">
<h2>number2 : {number2}</h2>
<button on:click={plusNumber2}>Plus</button>
<button on:click={minusNumber2}>Minus</button>
</div>
<!-- 시작은 "3" -->
{#if sum < 5}
<div class="number-container">
<h2>sum : {sum}은 5보다 작습니다</h2>
</div>
<!-- 중간은 ":" -->
{:else if sum >= 5 && sum < 10}
<div class="number-container">
<h2>sum : {sum}은 4보다 크고 10보다 작습니다</h2>
</div>
<!-- 끝은 "/" -->
{:else}
<div class="number-container">
<h2>sum : {sum}은 9보다 큽니다</h2>
</div>
{/if}
</div>
if문에 따라서 html이 렌더링된다.
if문 이외에도 each 블록, await 블록이 있으며, 모든 블록은 시작은 "#"으로 중간은 ":", 끝은 "/"이다.
개인 기록용입니다. 만약 잘못된 부분이 있다면 댓글로 알려주신다면 감사하겠습니다!
'프레임워크\라이브러리 > Svelte' 카테고리의 다른 글
[Svelte] 논리문법 await 블록 (0) | 2022.02.13 |
---|---|
[Svelte] 논리문법 each 블록 (0) | 2022.02.10 |
[Svelte]반응형 변수 (0) | 2022.01.28 |
[Svelte] 페이지 라우팅, svelte-routing (0) | 2022.01.23 |
[Svelte] 컴포넌트 및 변수, props (0) | 2022.01.19 |