Skip to content

常见问题

我需要在小程序渲染后做一些操作,小程序原生语法可以使用 setData 的回调,Vue Mini 应该怎么写呢?

可以使用侦听器 watch,并指明 flush: 'post' 选项:

js
defineComponent({
  setup() {
    const show = ref(false)
    watch(
      show,
      () => {
        // 会在 show 变更所触发的重渲染之后执行
        // ...
      },
      { flush: 'post' },
    )
    // ...
  },
})

也可以使用 watchPostEffect,但要注意 watchPostEffect 会先执行一次以搜集依赖。

默认情况下,Vue Mini 侦听器的回调是在渲染前被触发吗,就跟 Vue 一样?

不一定。虽然跟 Vue 一样,Vue Mini 侦听器的 flush 选项默认为 pre,但由于小程序的限制,默认情况下 Vue Mini 侦听器的回调的触发时机与小程序的渲染并无关联。从实际表现来看,默认情况下 Vue Mini 侦听器的回调一般会在小程序渲染前被触发,但这并不能被保证。

Released under the MIT License.