在 Vue3 组合 API 中让观察者立即工作

Posted

技术标签:

【中文标题】在 Vue3 组合 API 中让观察者立即工作【英文标题】:In Vue3 composition API make the watcher work immediately 【发布时间】:2021-03-12 04:02:19 【问题描述】:

使用 Vue3 组合 API。我如何让 watch 立即工作。以下代码不起作用。

watch((immediate=true) => props.isOpen, () => 
        if (props.isOpen && props.preventBackgroundScrolling) 
          document.body.style.setProperty('overflow', 'hidden')
         else 
          document.body.style.removeProperty('overflow')
        

          );

【问题讨论】:

【参考方案1】:

它应该作为选项放置:

watch(() => props.isOpen, () => 
        if (props.isOpen && props.preventBackgroundScrolling) 
          document.body.style.setProperty('overflow', 'hidden')
         else 
          document.body.style.removeProperty('overflow')
        

          ,immediate:true);

watch('props.isOpen', () => 
        if (props.isOpen && props.preventBackgroundScrolling) 
          document.body.style.setProperty('overflow', 'hidden')
         else 
          document.body.style.removeProperty('overflow')
        

          ,
       immediate:true
   );

【讨论】:

只是补充一点:推荐使用toRefs。像这样使用它:const isOpen = toRefs(props);

以上是关于在 Vue3 组合 API 中让观察者立即工作的主要内容,如果未能解决你的问题,请参考以下文章

Vue3 组成 api 看存储值

如何在可观察集合的 UI 中立即反映任何添加、删除、字段更改

如果我观看解构的道具,Vue 3 手表将无法工作

在 vue 3 中查看父组件的子属性

php--观察者模式

在 Angular 中组合可观察数据的正确方法是啥?