解決したい問題
ref
とshallowRef
の違いが全く分からないので、その違いを知ることで適切に使い分けることができるようになりたい。
この問題に直面したきっかけ
きっかけは、以下のコードを書いてchromeのデベロッパーツールのconsoleを見た時に「refではなくshallowRefを使った方がいいですよ」という意味のメッセージが書いてあったためです。
なので、ref
をshallowRef
に書き換えることでこのメッセージは出なくなったのですが、そもそも何が違うのかがいくら調べてもわからなかったのでその違いを知りたいと思い質問させていただきました。
vue.js
1<!--==================== template ====================--> 2<template> 3 <button @click="switchTo(FirstComponent)">FirstComponentにする</button> 4 <button @click="switchTo(SecondComponent)">SecondComponentにする</button> 5 6 <KeepAlive> 7 <component :is="currentComponent" /> 8 </KeepAlive> 9</template> 10 11<!--==================== script ====================--> 12<script setup> 13import { ref } from 'vue'; 14import FirstComponent from '../../components/FirstComponent.vue'; 15import SecondComponent from '../../components/SecondComponent.vue'; 16 17const currentComponent = ref(FirstComponent); 18 19const switchTo = (component) => { 20 currentComponent.value = component; 21}; 22</script> 23 24<!--==================== style ====================--> 25<style scoped lang="scss"> 26 27</style>
ERRORメッセージ
1Vue received a Component which was made a reactive object. 2This can lead to unnecessary performance overhead, and should be avoided by marking the component with `markRaw` or using `shallowRef` instead of `ref`.
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2023/05/02 13:54
2023/05/02 14:19