inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Giao diện web bắt đầu với Svelte

Tái sử dụng thành phần hiệu quả bằng cách sử dụng các khe

hovering 상태값 App.svelte에 전달시 오류

Đã giải quyết

244

japanspitz

3 câu hỏi đã được viết

0

App.svelte

<script>

import Card from './card.svelte';

</script>

<Card>

<span slot="name">

홍길동

</span>

<span slot="address">

서울특별시<br>여의도동

</span>

<span slot="email">

ab@abc.com

</span>

</Card>

<Card let:hovering>

<span slot="email">

{#if hovering}

<b>ab@abc.com</b>

{:else}

ab@abc.com

{/if}

</span>

</Card>

 

 

card.svelte

<style>

.contact-card {

width: 300px;

border: 1px solid #aaa;

border-radius: 2px;

box-shadow: 2px 2px 8px rgba(0,0,0,0.1);

padding: 1em;

margin: 0 0 1em 0;

}

h2{

padding: 0 0 0.2em 0;

margin: 0 0 1em 0;

border-bottom: 1px solid #ff3e00;

}

.address, .email {

padding: 0 0 0 1.5em;

background: 0 50% no-repeat;

background-size: 1em 1em;

margin: 0 0 0.5em 0;

line-height: 1.2;

}

.address { background-image: url(tutorial.icons/map-marker.svg); }

.email { background-image: url(tutorial/icons/email.svg); }

.missing { color: #999; }

.hovering { background-color: #ffed99;}

</style>

<script>

let hovering = false;

const enter = () => hovering = true;

const leave = () => hovering = false;

</script>

<article class="contact-card" class:hovering on:mouseenter={enter} on:mouseleave={leave}>

<h2>

<slot name="name">

<span class="missing">이름 미입력</span>

</slot>

</h2>

<div class="address">

<slot name="address">

<span class="missing">주소 미입력</span>

</slot>

</div>

{#if $$slots.email}

<div class="email">

<slot {hovering} name="email">

<span class="missing">이메일 미입력</span>

</slot>

</div>

{/if}

</article>

 

제가 작성한 코드인데 뭔가 잘못된 것인지 오류 메세지로

let:hovering declared on parent component cannot be used inside named slot (App.svelte:21:7)

라고 나옵니다.

강의를 제가 잘못 따라한 것인지 궁금합니다.

 

<script>

import Card from './card.svelte';

</script>

<Card>

<span slot="name">

홍길동

</span>

<span slot="address">

서울특별시<br>여의도동

</span>

<span slot="email">

ab@abc.com

</span>

</Card>

<Card let:hovering>

<span slot="email" let:hovering>

{#if hovering}

<b>ab@abc.com</b>

{:else}

ab@abc.com

{/if}

</span>

</Card>

이렇게 slot 내부에 다시 hovering을 선언하면 작동은 잘 되는데 맞게 작성한지 잘 몰라서 질문드립니다.

svelte

Câu trả lời 1

0

Indie Coder

다음과 같이 props로 받는 부분을 <Card>가 아니라 named slot 본체에 하면 정상적으로 작동합니다.

아마도 이부분은 svelte가 버전업을 하면서 변경된 부분인 것 같습니다.

 

<script>
import Card from './Card.svelte';
</script>

<Card>
...
	<span slot="email" let:hovering > <!-- 이부분에서 let으로 값을 받음 --->
		{#if hovering}
			<b>myemail@google.com</b> 
		{:else}
			myemail@google.com
		{/if}
		<br>
		{hovering}
	</span>
</Card>

0

japanspitz

아하! 넵 감사합니다~

프로젝트 실행이 되지 않아 menu API 테스트가 불가합니다 ㅠ

0

155

9

프론트 api.js의 요청 headers 옵션의 cors 관련 설정 질문

0

75

2

모듈 버전이 안맞아서 발생하는 문제 같습니다;;;

0

208

2

meteor 버전 때문에 실행이 안됩니다.

0

176

2

graghQL의 transaction 처리속도가 궁금합니다.

0

131

2

질문있습니다.

0

131

2

화면 구성 설명용 도구 이름

0

166

1

Meteor 실행 오류 문의 드립니다.

0

197

1

영호 좋아요 버튼이 콘솔에는 잘 찍히지만 화면에 렌더링 되지 않습니다.

0

139

2

영화목록 component 만들기 에서 질문이 있습니다.

0

218

3

"hello".toUpperCase() 가 안되는데요.

0

154

1

날짜 포매팅 관련 질문

0

144

1

삭제 후 홈으로 돌아가는 코드 관련 질문

0

142

2

Window 환경에서 meteor 설치하는 부분에 대해 실습환경 구축 부분에 추가내용이 없습니다.

0

235

3

56강 4. 슬롯 포워딩이 Svelte 5 부터는 적용 불가

0

218

1

OnDestroy() 위치 질문

0

155

1

$(리액티브선언문) 으로 setInterval과 clearInterval 를 작성 시 메모리 관련

1

224

1

리액트에서 적용할 때 질문있습니다.

0

228

1

스벨트킷에 대해서 질문이 있습니다.

0

359

1

에러가 나서 질문올립니다.

1

211

1

Upload, 파일사이즈 코드 질문있습니다.

0

273

1

이벤트 함수 on, handle 어떤 기준으로 정하는걸까요?

0

329

1

itemForm에서 Modal바인딩 질문있습니다.

1

191

1

css 파일 질문있습니다

0

186

1