我有一个带有以下代码的插件:
let vm = new Vue({
data: {
foo: 1,
},
watch: {
$data: {
deep: true,
handler(){
console.log('changed')
}
}
}
})
vm.foo = 123; // should trigger watcher
问题是消息'changed'
仅在客户端打印,这意味着在SSR期间未将观察者称为服务器端吗?对这种行为有任何解释吗?谢谢!
答案 0 :(得分:1)
这是一个纯Vue SSR的小型实现:https://codesandbox.io/s/oqx461ll8z
结果与预期的有些不同。 SSR流程完成后,观察者将使用最新值进行拖动。由于服务器上没有反应性,Vue出于一致性和性能方面的原因(source)必须预取数据,所以会发生这种情况。
结果:
<div data-server-rendered="true">123</div>
{ foo: [Getter/Setter] } 123 123
changed