外观
使用 shallowRef
- Authors
 
- Name
 - Elone Hoo
 - Me
 - @elonehoo
 
我们可以使用 shallowRef 优化 Vue.js 应用程序中的反应性:
vue
<script setup lang="ts">
const user = shallowRef({
  name: 'Elone Hoo',
  friends:[
    {
      name: 'Fenta',
      friends:[
        // ...
      ]
    },
    {
      name:'Luna',
      friends:[
        // ...
      ]
    }
  ]
})
</script>
Reactivity only 在 ref 本身的值改变时触发:
vue
<script setup lang="ts">
// 触发响应式更新
user.value = matthew
</script>
但是修改任何嵌套属性都不会触发任何东西:
vue
<script setup lang="ts">
// 不会触发响应式更新
user.value.name = 'Hoo Elone'
</script>
向大型对象添加深度反应性可能会消耗大量性能,因此这对于节省一些 CPU 周期很有用。
如果有必要,我们还可以手动触发反应式更新:
vue
<script setup lang="ts">
// 每当用户更改时记录它
watchEffect(Q => console.log(user));
// 更新嵌套状态(不会发生日志记录)
user.value.name = 'Elone Hoo';
// 强制触发响应式更新
triggerRef(user); 
// [用户对象]
</script>
有关更多信息,请参阅文档:https://cn.vuejs.org/api/reactivity-advanced.html#shallowref