inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념

부모컴포넌트에서 자식컴포넌트의 slot으로 이미지를 보낼때 질문있습니다.

해결된 질문

241

유대상

작성한 질문수 4

1

Vue완벽가이드를 완강하고 프로젝트를 하나 만들고 있는 와중에 궁금증이 생겨서 질문 드립니다..

흐름은 이렇습니다. Vuex의 state에 저장되어 있는 이미지Url을 부모 컴포넌트에서 slot이 있는 자식 컴포넌트로 보내주려고 합니다.

이미지 Url이 src속성에 제대로 들어오는 것은 확인했습니다만 화면상에 이미지가 나타나지 않습니다 ㅠㅠ

여러가지 시도를 해보았지만 잘 되지 않습니당 ㅠ

첫번째 방법으로는  부모 컴포넌트에서 v-html 디렉티브를 이용해서 뿌려 주는 방법입니다. 아래 코드를 첨부하였습니다.

<!-- 부모 컴포넌트 -->

<display-items 
        v-for="product in products" 
        :key="product.name" 
      >
        <template #productInfo-photo>
          <div class="item-container__photo" v-html="product.imgElement"></div>
        </template>
 </display-items>

<!-- 
   product.imgElement =   '<img src="../assets/img/brands/img.png" />'
 -->

<!-- 자식 컴포넌트 -->

<template>
    <div>
        <slot name="productInfo-photo" />
    </div> 
</template>

두번째 방법은 프롭스를 내려주는 방식으로 이미지url을 내리는 방식으로 구현했습니다.

<!-- 부모컴포넌트  -->

<display-items 
        v-for="product in products" 
        :key="product.name" 
        :imgPath="product.photoUrl"
        />


<!-- 자식컴포넌트 -->
<template>
    <img :src="imgPath" />
</template>

<script>
export default {
    props:['imgPath'],
}
</script>

자세히 보니 이미지 url까지는 들어오지만 자식컴포넌트에서 적용한 CSS가 먹히지 않는 것 같은데 이유를 잘 모르겠습니다 ㅠ

제가 첨부한 코드에서는 class를 명시하지 않았지만, 첫번째 코드에서는 요소의 class를 imgElement에 포함시켰고, 두번째 코드에서는 자식 컴포넌트의 img태그에 작성하였습니다.

제가 어떤 부분을 놓치고 있는지와 다른 더 좋은 방법이 있는지 궁금합니다 !

javascript vuejs

답변 1

1

캡틴판교

안녕하세요 홀랄쓰롤랄쓰님,

자식 컴포넌트에서 CSS 스타일이 적용되지 않는 것은 컴포넌트의 스타일 적용 범위(scoped 적용 유무)를 고려해서 다시 스타일 시트 작성하시면 될 것 같습니다. 그리고 이미지를 별도의 컴포넌트로 구분해서 개발하실 때 하실 수 있는 방법인 props, slot 모두 사용하신 것 같아서 딱히 더 말씀드릴 부분이 없네요.. 현재 구조에서 props와 slot의 차이점을 설명드리기에는 너무 설명이 길어질 것 같아 제가 강의에서 다룬 내용들을 다시 살펴보시라고 밖에 말씀 드릴수가 없을 것 같아요..! :)

깃 권한 요청 드립니다

0

50

1

깃 권한 신청

0

50

1

깃 권한 요청드립니다.

0

111

1

깃허브 권한 요청 드립니다

0

144

1

깃허브 권한 요청 드립니다

0

161

1

깃허브 권한 요청 드립니다

0

167

1

깃허브 권한 요청 드립니다.

0

154

1

안녕하세요 vue 2.7로 수강하고 있는 학생입니다. 실무에서 최하위 자식의 props와 watch의 관계를 여쭈고자 합니다.

0

208

1

ide 타입추론 기능 사용할 수 없을까요??

0

207

1

컴포넌트 링크는 vue peek 익스텐션 설치가 필수인가요??

0

228

1

Vue3로 진행중입니다

1

338

1

Vue router-link 사용시 같은 url이면

1

506

1

vue3 에러 메세지...

1

670

2

id ="app" 중복

0

271

2

use undefined 에러가 나옵니다.

1

318

2

깃허브 권한 요청드립니다.

1

358

2

권한요청드립니다.

1

299

2

Vue3에서 구글 애드센스 탑재하기

1

437

2

코드가 정상 작동 되는건지 ...

1

303

1

강의에서 api를 따로 빼셨는데 얻는 이점이 뭐죠?

1

243

1

vuex 적용시 질문

1

288

2

라우터 버전이 안맞는데 어떤걸 써야하나요

1

385

2

UserView에 id 속성만 undefined로 넘어오는데 이유를 모르겠습니다..

1

455

2

권한요청 드립니다!

1

275

2