Closed6

Vue3のpropsとwatch挙動メモ

miyanokomiyamiyanokomiya
props: {
  obj: {
    type: Object,
    default: () => ({ val: 1 }),
  }
  text: {
    type: String,
    default: '',
  }
},
setup(props) {
  watch(() => props.obj, (to, from) => {
    console.log(to === from)
  })
}

こういう状況で、親側はobjを渡さず、textを変更するとwatchが発動する。to === fromfalse
defaultがfactoryから再取得されて、値が変わったと見なされている?

Vue2ではそんな挙動ではなかった気がする。

miyanokomiyamiyanokomiya
default: { val: 1 },

と書くと同条件でもwatchは発動しない。やはりdefaultのfactoryとwatchの組み合わせが何やら怪しい。

miyanokomiyamiyanokomiya

今の時代propsをコンポーネント内で変更しようとする開発者はいないのではないか。factory関数使わなくていい気もする。lintで怒られるか。

このスクラップは2021/03/26にクローズされました