【问题标题】:I keep getting this error in my console everything i visit this route我在控制台中不断收到此错误,我访问此路线的所有内容
【发布时间】:2021-12-01 05:35:06
【问题描述】:
    VM28353:1 Uncaught (in promise) SyntaxError: Unexpected token o in JSON at position 1
    at JSON.parse (<anonymous>)
    at getUser (auth.js?c7d4:11)
    at wrappedGetter (vuex.esm-browser.js?5502:335)
    at Object.eval [as getUser] (vuex.esm-browser.js?5502:88)
    at Object.get [as getUser] (vuex.esm-browser.js?5502:135)
    at Proxy.getuser (Profile.vue?c66d:98)
    at ReactiveEffect.run (reactivity.esm-bundler.js?a1e9:160)
    at ComputedRefImpl.get value [as value] (reactivity.esm-bundler.js?a1e9:1086)
    at Object.get [as getuser] (runtime-core.esm-bundler.js?5c40:2109)
    at Proxy.render (Profile.vue?c66d:26)

个人资料.vue 这是唯一调用 getter 的文件

computed: {
       getuser() {
        return this.$store.getters.getUser;
       },
     },

    

Auth.js 在控制台中,它的状态是错误来自我的 auth 模块中的 getUser getter

    const getters = {
       isLoggedIn: (state) => !!state.token,
       getUser: (state) => JSON.parse(state.user),
       getToken: (state) => state.token,
    };

    const mutations = {
      setToken: (state, payload) => {
        state.token = payload;
        localStorage.setItem("auth_token", payload);
      },
      setUser: (state, payload) => {
        state.user = payload;
        localStorage.setItem("user", JSON.stringify(payload));
      },
    };

【问题讨论】:

  • 如果你使用mapState,你就不需要getter

标签: javascript vue.js vuex vuejs3


【解决方案1】:

我猜state.user 已经是一个对象,因此您不需要使用JSON.parse,因为JSON.parse() 将输入转换为字符串。 JavaScript 对象的 toString() 方法默认返回 [object Object],导致观察到的行为。

尝试删除它,以便您的代码应该是

const getters = {
       isLoggedIn: (state) => !!state.token,
       getUser: (state) => state.user,
       getToken: (state) => state.token,
    };

【讨论】:

    猜你喜欢
    • 2023-01-24
    • 2022-06-16
    • 2022-11-28
    • 2011-08-22
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多