Reactのprops管理をいい感じにするnpmパッケージをつくった

33491 ワード

Reactのprops記法に満足していますか?

記法に関してVue派とReact派はよく揉める。
Vueの記法も綺麗だと思うけど、私はもうJSXを手放せないので趣味ではReactばかり書いている。

そんなReactお熱な私だが、propsの書き方に関してはVueが恋しくて仕方がない。

<script>
export default {
  props: {
    hoge1: {
      type: String,
      default: 'abc',
      required: true
    },
    hoge2: {
      type: String,
      default: '',
      required: false
    }
  }
}
</script>

型、デフォルト値、必須属性。全ての情報を一元管理できている感が素晴らしい。

一方のReactはPropsの型定義とデフォルト値定義を別オブジェクトで書く(書かざるを得ない?)。
デフォルト値に関してはオブジェクトにまとめるどころか、関数コンポーネントの引数部分にデフォルト引数としてベタ書きすることもしばしばある。
storybookを使っている場合は、storyのargTypesとFC引数の2箇所に同じ値をベタ書きする羽目になる。

なんとかならないものかと思い、実は数ヶ月前にちょっとしたオレオレ記法を実現するモジュールを作った。
それをようやくnpmパッケージとして公開してみたので、ヒソヒソと紹介してみる。

@polym/react-propsライブラリによる個人的な記法革命