【问题标题】:How do you get something like window.location.host while in a vuex SSR?在 vuex SSR 中如何获得类似 window.location.host 的内容?
【发布时间】:2021-06-23 18:28:58
【问题描述】:

我正在创建 xyz.com 站点和 abc.xyz.com 子域的客户端。两个站点使用相同的 Vue / Nuxt 源代码 使用 API:xyz.com/api... 和 abc.xyz.com/api... 通过 vuex。但我不明白你如何在 vuex 中从Location API 获得类似 window.location.host 的东西?

// state
export default () => ({
    api: window.location.host
})

// getters
getLocation = state => state.api // ReferenceError - window is not defined

我可以在没有插件的情况下做到这一点吗?

【问题讨论】:

  • window 是客户端对象,SSR 中没有“window”。在 SSR 中,您可以使用 req.url 来捕获 url。
  • 最终目标是什么?
  • @kissu 从 xyz.com/api... 或 abc.xyz.com/api... 获取数据,在第一次挂载应用程序之前

标签: javascript vue.js nuxt.js vuex


【解决方案1】:

我解决了这个问题。我使用了 nuxtServerInit 和 req.headers.host:

nuxtServerInit ({ commit }, { req }) {
    const { host } = req.headers

    if (host) {
        commit('setHost', host)
        commit('setUrl', `https://${host}/`)
        commit('setApi', `https://${host}/api/v1`)
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 2016-12-11
    相关资源
    最近更新 更多