👌

配列やオブジェクトで「vue/require-valid-default-prop」エラーが表示される問題の解決法

2022/07/14に公開

Vue3でComposition API形式で開発していたところ、コンポーネントのデフォルト引数が配列の時にeslint-plugin-vueでvue/require-valid-default-propエラーが発生しました
その時の解決法のメモです

<script setup lang="ts">
export interface Props {
  test?: string[]
  test2?: boolean
  test3?: number
  test4?: string
}

const props = withDefaults(defineProps<Props>(), {
  test: ['test', 'test2'],
  test2: true,
  test3: 1,
  test4: 'test',
})
</script>

<template>
  <p>test</p>
</template>

解決法

ファクトリー関数にする

https://vuejs.org/guide/components/props.html#prop-validation

原因・理由

JavaScriptはオブジェクト型は参照渡しになるので、同一のObjectに変更を加えてしまう危険性があるため、ファクトリー関数にすることでその問題を回避しているようです
ファクトリー関数という用語を初めて知ったので、勉強になりました

https://github.com/vuejs/vue/issues/1032

どこかで自分が間違えてるんだろうなと思いつつ、eslint-plugin-vueにissueを上げてみたらメンテナーの方が丁寧に即レスしてくれたので、自分の恥をここに供養します

https://github.com/vuejs/eslint-plugin-vue/issues/1932

Discussion

ログインするとコメントできます