Я не новичок в Vue. В моей среде разработки включен строгий режим. Я уже использовал Mutation, но эта ошибка всегда вылетает, когда я пытаюсь войти в систему.
(Я много гуглил, но не нашел полезного ответа)
Я использую Квазар.
https://quasar.dev/quasar-cli/vuex-store#Adding-a-Vuex-Module.
магазин/index.js
import Vue from "vue";
import Vuex from "vuex";
import auth from "./auth";
Vue.use(Vuex);
export default function(/* { ssrContext } */) {
const Store = new Vuex.Store({
modules: {
auth
},
// for dev mode only
strict: process.env.DEV
});
return Store;
}
Имя модуля: авторизация
состояние.js
export default {
error: "",
token: null,
userId: null
};
действия.js
export async function login({ state, commit, dispatch }, payload) {
const { username, password } = payload;
const params = {
username,
password
};
try {
const { data, status } = await axios.post("auth/login", params);
if (status === 200) {
commit("setAuthUser", { token: data.token, userId: data.userId }); // throw error here
commit("setError", ""); // throw error here
}
} catch (error) {
console.log(error);
}
}
mutaions.js
export const setError = (state, payload) => {
state.error = payload;
};
export const setAuthUser = (state, payload) => {
state.token = payload.token;
state.userId = payload.userId;
};
Любая помощь будет оценена.
мой логин.vue
data() {
return {
form: {
username: "admin",
password: "secret"
}
};
},
methods: {
login() {
this.$store.dispatch("auth/login", this.form);
}
}
Я не использовал состояние непосредственно в разметке
Прочтите токен в файле маршрутов, чтобы проверить разрешение.
if (to.matched.some(record => record.meta.requiresAuth)) {
if (store.state.auth.token === null) {
next({
path: "/login",
query: { redirect: to.fullPath }
});
} else {
next();
}
} else {
next();
}
});
async / await
, который вызывает ошибку. в моем случае я просто переместил запрос ajax в компонент и зафиксировал событие из моего компонента в хранилище - person Ifaruki   schedule 04.08.2020async / await
не будут вызывать эту ошибку сами по себе. Я подозреваю, что OP где-то неосознанно цепляется за ссылку на объект, но до сих пор они не показали этот код. - person Phil   schedule 04.08.2020this.$store.state.auth...
, геттеры,mapState
и т. д.)? У вас есть что-то из этого или ваше состояние никогда не читается? - person Phil   schedule 04.08.2020v-model
, как в связанной проблеме. - person Tony   schedule 04.08.2020nextTick()
: у меня была та же ошибка, что и у оператора, и я просмотрел настройки VueX 10 раз, не найдя никаких проблем. Что устранило ошибку для меня, так это то, что мой вызов фиксации магазина был обернут простым VuenextTick()
; указание на то, что это как-то связано с порядком загрузки, синхронизацией и т. д. Я не говорю, что это решение, но оно может помочь вам двигаться дальше и/или обнаружить главного виновника. - person MarsAndBack   schedule 10.01.2021