LoginSignup
5
5

More than 5 years have passed since last update.

Nuxt.jsで画像をバインディングする方法2018年8月

Posted at

Nuxt.jsで画像をバインディングするする方法

自分用のメモとして記す。

今回は、初期に入っている src/assets/logo.png を親コンポーネントから子コンポーネントに渡してみる。

require方式→うまくいかなかった

検索すると、以下のようにrequireでpropsから渡ってきた画像を囲んで、返ってきた文字列を<img :src="返ってきた文字列">のやり方があった。
が、requireなんて関数ねえよって怒られた。

src/pages/top.vue
<template>
  <div class="top">
    <MainVisual image_url="../../assets/logo.png">
  </div>
</template>

<script>
import MainVisual from '../commons/MainVisual'
export default {
  name: 'Top',
  components: {
    MainVisual
  }
}
</script>

src/components/commons/MainVisual.vue
<template>
  <div>
    <img :src="src">
  </div>
</template>

<script>
export default {
  name: 'MainVisual',
  props: {
    image_url: String
  },
  data () {
    src: require(this.image_url)
  }
}
</script>

import方式→うまくいった

解決策として、以下のように親コンポーネントで使用する画像をimportしておき、それを子コンポーネントに渡した。

src/pages/top.vue
<template>
  <div class="top">
    <MainVisual :image_url="src">
  </div>
</template>

<script>
import MainVisual from '../commons/MainVisual'
import MainImage from '../../assets/logo.png'
export default {
  name: 'Top',
  components: {
    MainVisual
  },
  data () {
    return {
      src: MainImage
    }
  }
}
</script>

src/components/commons/MainVisual.vue
<template>
  <div>
    <img :src="image_url">
  </div>
</template>

<script>
export default {
  name: 'MainVisual',
  props: {
    image_url: String
  }
}
</script>
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5