Nuxt - 如何在服务器端渲染后在客户端运行代码?

问题描述 投票:0回答:4

我创建了一个注入 noty 的插件(https://ned.im/noty/#/),这样我就可以在全球范围内使用它,它看起来像这样:

export default ({ app }, inject) => {

    const notify = function (options = {}) {
        if (process.client) {
            new Noty(options).show();
        }
    }

    app.$notify = notify;
    inject('notify', notify);

}

此插件仅在客户端显示通知。在服务器端不会出现通知,因为它只能在浏览器中显示。 我有一个包含产品详细信息的页面,并且我正在 asyncData 方法中接收数据。当找不到产品时,我想显示带有正确消息的通知,并将用户重定向到产品列表页面。当我在客户端更改路线时,一切都很棒。然而,在服务器端发生的第一个页面加载(例如,我在浏览器中手动更改网址)不会出现通知,只有重定向有效。 我的问题是:在这种情况下如何显示通知?如何在 SSR 之后在浏览器中创建通知,或者解决我的问题的最佳其他解决方案是什么?

有没有办法在客户端渲染后(服务器端渲染之后)运行一些代码?

vue.js nuxt.js server-side-rendering noty
4个回答
1
投票

您可以禁用该插件的 ssr。

plugins: [
   ...,
   { src: '~plugins/yourplugin.js', ssr: false }
]

0
投票

好吧,我找到了一个模块:https://github.com/potato4d/nuxt-client-init-module


0
投票

这是不可能正确知道的(nuxt <= 2.14.0 when i answering) but you can combine client plugin and client middleware to achieve that please take a look at this link:

https://github.com/nuxt/nuxt.js/issues/2653#issuecomment-390588837


0
投票

在 Nuxt 3 中:

<script setup>
console.log('run in server-side.');
onMounted(() => {
    console.log('run in client-side.');
});
</script>
© www.soinside.com 2019 - 2024. All rights reserved.