hovering 상태값 App.svelte에 전달시 오류
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을 선언하면 작동은 잘 되는데 맞게 작성한지 잘 몰라서 질문드립니다.
답변 1
0
다음과 같이 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>
프로젝트 실행이 되지 않아 menu API 테스트가 불가합니다 ㅠ
0
134
9
프론트 api.js의 요청 headers 옵션의 cors 관련 설정 질문
0
61
2
모듈 버전이 안맞아서 발생하는 문제 같습니다;;;
0
188
2
meteor 버전 때문에 실행이 안됩니다.
0
161
2
graghQL의 transaction 처리속도가 궁금합니다.
0
112
2
질문있습니다.
0
107
2
화면 구성 설명용 도구 이름
0
158
1
Meteor 실행 오류 문의 드립니다.
0
184
1
영호 좋아요 버튼이 콘솔에는 잘 찍히지만 화면에 렌더링 되지 않습니다.
0
129
2
영화목록 component 만들기 에서 질문이 있습니다.
0
209
3
"hello".toUpperCase() 가 안되는데요.
0
148
1
날짜 포매팅 관련 질문
0
134
1
삭제 후 홈으로 돌아가는 코드 관련 질문
0
137
2
Window 환경에서 meteor 설치하는 부분에 대해 실습환경 구축 부분에 추가내용이 없습니다.
0
221
3
56강 4. 슬롯 포워딩이 Svelte 5 부터는 적용 불가
0
207
1
OnDestroy() 위치 질문
0
146
1
$(리액티브선언문) 으로 setInterval과 clearInterval 를 작성 시 메모리 관련
1
219
1
리액트에서 적용할 때 질문있습니다.
0
217
1
스벨트킷에 대해서 질문이 있습니다.
0
350
1
에러가 나서 질문올립니다.
1
196
1
Upload, 파일사이즈 코드 질문있습니다.
0
262
1
이벤트 함수 on, handle 어떤 기준으로 정하는걸까요?
0
314
1
itemForm에서 Modal바인딩 질문있습니다.
1
182
1
css 파일 질문있습니다
0
178
1





