nuxtjs 各个生命周期HOOK多次调用BUG

BUG 版本: ~2.15.3
初次使用发现如果定义多个 layout 的情况, 每个钩子都会被调用两次
如果是 server 端的钩子的话会被调用三次

  • client 端两次
  • server 端一次

测试方法

1
2
3
4
5
laytous/
default.vue
custom.vue
pages/
test.vue

text.vue

1
2
3
4
5
6
7
8
9
10
11
<script>
export default {
layout: 'custom',
created() {
console.log(this.$nuxt.layoutName, process.client, process.server);
},
fetch() {
console.log(this.$nuxt.layoutName, process.client, process.server);
}
};
</script>

这样可以看到 created 执行两次, fetch 执行三次
那么要规避这个问题,则

1
2
3
4
5
created() {
if(this.$nuxt.layoutName) {
// your code
}
}

只要判断layoutName 非空即可

# ,

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×