JHyeok

Nuxt.js에서 컴포넌트의 props

December 03, 2019☕️ 1 min read

props를 사용할 때, HTML에서는 kebab-case(article-data)를 사용하는 것을 권장한다.

Javascript에서는 camelCase(articleData)를 사용하는 것을 권장한다.

<article-card article-data="article"></article-card>

Nuxt.js 최신 버전(v2.10)에서는 props를 아래와 같이 쓰는 것을 권장한다. 기존 방식 props: ['articleData']를 사용하면 eslint(vue/require-prop-types)에 위반돼서 경고가 표시된다.

export default {
  props: {
    articleData: {
      type: Array,
      default: []
    }
  }
}

Vue.js 가이드에 나와있는 사용할 수 있는 type이다.

  • String
  • Number
  • Boolean
  • Array
  • Object
  • Date
  • Function
  • Symbol

Components의 props에서 Function type을 사용할 때는 default를 어떻게 설정을 해야 할지 몰랐다. stackoverflow에서 나와 같은 궁금증을 가진 질문을 봤고 좋은 답안이 있었다.

props: {
    clickFunction: {
        type: Function
        default: ????
    }
}

위의 코드처럼 default값이 헷갈리기 쉬운 Function과 Object의 default 예시이다.

props: {
  clickFunction: {
    type: Function
    default: () => {}
  }
}

props: {
  someObject: {
    type: Object
    default: () => ({})
  }
}

Reference


JHyeok

JaeHyeok Kim

Written by JaeHyeok Kim
Github

© 2019 - 2022, Built with Gatsby